Informatica Online Judge

  성적처리 [1082 / 043A]

Time Limit(Test case) : 1500 (ms)
Number of users who solved : 145   Total Tried : 170


The Champion of this Problem (C++) : ajou709 - ms / 618byte
My Best Submission (C++) : N/A

[JKJeong 2014]

Background

이번에 GSHS국의 학생 n명이 수학능력평가를 치루었다.

GSHS국의 수능은 1000점 만점이고, 소수점 이하 2자리까지 소수점을 가진다.

GSHS국의 수능 점수확인 시스템은 웹을 통해서 학생의 점수를 확인해주는 서비스를 제공한다.

여러분이 그 시스템의 알고리즘을 제작해보자.

먼저 학생들은 2가지 쿼리를 가진다.

쿼리 1은 자신의 순위를 확인하는 것이다. 예를 들어 "1 5"라고 입력하면 처음의 1은 1번 쿼리라는 뜻이고 5는 5번 수험번호를 가지는 학생의 순위라는 의미이다.

따라서 5번 학생의 전체 순위를 출력한다.

쿼리 2는 자신의 점수를 변경하는 것이다. 이는 이의 신청의 의미로 자신이 원하는 점수로 일단은 바꿔주어야 한다.

예를 들어 "2 5 997.00" 의 형식으로 입력되면 쿼리가 2이기 때문에 5번 학생의 점수를 997.00점으로 바꾼다는 의미이다.

각 정보를 입력받아 모든 쿼리를 해결하는 프로그램을 작성하시오.

Input

첫 번째 줄에 학생의 수 n이 입력된다.

다음 줄에 n개의 점수가 입력된다. 각 점수는 0.00 ~ 1000.00까지의 소수점 둘째 자리의 값을 가지는 실수이다.

다음 줄에는 쿼리의 수 q가 입력된다.

다음 줄부터 q줄에 걸쳐서 쿼리가 입력된다. 쿼리는 1과 2로 구분되는데 1번 쿼리는 1과 번호를 가르키는 값이 공백으로 구분되어 입력되고 2번 쿼리일 경우에는 2와 학생의 번호, 바꿀 점수가 공백으로 구분되어 입력된다.

[Sub Task Info]
10%의 데이터는 n, q는 100 이하이다.
10%의 데이터는 n, q의 값이 3,000 이하의 값이다.
20%의 데이터는 n, q의 값이 10,000이하의 값이다.
60%의 데이터는 n은 300,000 이하, q는 100,000이하의 값이다.

Output

각 쿼리의 결과를 출력한다.

IO Example

입력
8
997.12 668.10 123.00 19.12 999.99 1000.00 554.12 777.77
5
1 5
2 4 1000.00
2 1 1000.00
2 8 1000.00
1 5

출력
2
5

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]