Codeforces and Polygon may be unavailable between Aug. 17, 19:00 (UTC) to Aug. 17, 22:00 (UTC) due to planned power outages. ×

ciara's blog

By ciara, history, 6 weeks ago, In English

In this problem, you have to maintain a dynamic set of numbers which support the two fundamental operations

INSERT(S,x): if x is not in S, insert x into S

DELETE(S,x): if x is in S, delete x from S

and the two type of queries

K-TH(S) : return the k-th smallest element of S

COUNT(S,x): return the number of elements of S smaller than x

Input

Line 1: Q (1 <= Q <= 200000), the number of operations

In the next Q lines, the first token of each line is a character I, D, K or C meaning that the corresponding operation is INSERT, DELETE, K-TH or COUNT, respectively, following by a whitespace and an integer which is the parameter for that operation.

If the parameter is a value x, it is guaranteed that 0 <= |x| <= 109. If the parameter is an index k, it is guaranteed that 1 <= k <= 10^9.

Output

For each query, print the corresponding result in a single line. In particular, for the queries K-TH, if k is larger than the number of elements in S, print the word 'invalid'.

Input

8

I -1

I -1

I 2

C 0

K 2

D -1

K 1

K 2

Output

1

2

2

invalid

I can't solve this problem with trie

someone can help me !!!!

 
 
 
 
  • Vote: I like it
  • -23
  • Vote: I do not like it

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

No help

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

Try to solve this problem using a self-balancing BST or Treap. In my case, I solved this problem with Treap. I hope this will help.