Guest User

Untitled

a guest
Mar 28th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #include <ext/pb_ds/tree_policy.hpp>
  4. #define pb push_back
  5. #define mp make_pair
  6. #define db 0
  7. #define all(x)(x).begin(),(x).end()
  8. #define x first
  9. #define y second
  10. #define scan(x) do{while((x=getchar())<'0'); for(x-='0'; '0'<=(_=getchar()); x=(x<<3)+(x<<1)+_-'0');}while(0)
  11. char _;
  12. using namespace std;
  13. using namespace __gnu_pbds;
  14.  
  15. typedef tree<
  16. int,
  17. null_type,
  18. greater<int>,
  19. rb_tree_tag,
  20. tree_order_statistics_node_update>
  21. set_t;
  22.  
  23. int N,X,R,K,n;
  24. char cmd;
  25. map<int,int>user,score;
  26. set_t s;
  27.  
  28.  
  29. int main(){
  30. freopen("Input/wowow1.in","r",stdin);
  31. scanf("%d",&N);
  32. for(int i = 0;i < N;++i){
  33. scanf(" %c",&cmd);
  34. if(cmd == 'N'){
  35. scan(X);
  36. scan(R);
  37. user[X] = R;
  38. score[R] = X;
  39. s.insert(R);
  40. }
  41. else if(cmd == 'M'){
  42. scan(X);
  43. scan(R);
  44. s.erase(user[X]);
  45. score.erase(user[X]);
  46. user[X] = R;
  47. score[R] = X;
  48. s.insert(R);
  49. }else{
  50. scan(K);
  51. printf("%d\n",score[*s.find_by_order(K-1)]);
  52. }
  53. }
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment