2010 Canadian Computing Competition, Stage 2
Day 1, Problem 3: Wowow
In the World of World of Warcraft, there is a very competitive ladder system. Sometimes players will change their rating. Also, new players (including more and more of your friends!) are constantly joining the game.
You and your group of friends would like to maintain a simple database with your scores, and you, as the computer scientist of the group, have been charged with the responsibility of maintaining it. Don't let your friends down!
Input
The input will consist of an integer N (1 ≤ N ≤ 106), followed by N lines. Each of these N lines will correspond to one of the following three formats:
NX R, whereNis the character'N'to indicate a new friend has been added, X is a number (1 ≤ X ≤ 106) identifying this new friend, and R (1 ≤ R ≤ 108) is the rating of this new friend.MX R, whereMis the character'M'to indicate a modification of an existing friend, X is a number (1 ≤ X ≤ 106) identifying one of your friends, and R is the new rating assigned to this existing friend.QK, whereQis the character'Q'to represent a query, K is a number (1 ≤ K ≤ 106), and K is at most the number of your friends that have a rating at this point.
You may assume there will be no identical ratings in the input.
Output
For each line of input of the format Q K, you will
output a line containing the identifier of the Kth highest rated
person in the database at that point. Note that when K = 1, that
is the top rated person, and K = 2 is the second best rated person,
and so on.
Sample Input
7 N 10 1000 N 3 1014 Q 1 M 10 2000 Q 1 N 65 1950 Q 2
Sample Output
3 10 65
All Submissions
Best Solutions
Point Value: 20 (partial)
Time Limit: 3.00s
Memory Limit: 256M
Added: May 19, 2010
Languages Allowed:
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, PHP, SCM, CAML, PERL, C#, C++11, PYTH3






Comments (Search)
like fifiman said, if you have friends with IDs 1,6,8,10 you don't need to keep an array of 1 to 10, you only need an array of 1-4, and a map that looks something like {1:0,6:2,8:3,10:4}. That way when you need the person with ID 6, you look at your map and redirect to index 4 in your array. (This is not necessarily how you want to use maps in this question)In any case, I wonder whether this is getting to be too much discussion about the answer... people looking for clarifications in the comments don't necessarily want to be given the solution.