SOJ ONLINE JUDGE

Ordered Set

난이도: Platinum V 출제자: rlatjwls7882 시간 제한: 1000 ms 메모리 제한: 512 MB
트리를 사용한 집합과 맵

GNU PBDS를 사용하면 ordered_set이라는 집합 자료구조를 구현할 수 있다.

처음에 빈 집합 $S$가 있다. $Q$개의 쿼리를 순서대로 처리하라.

쿼리는 다음 중 하나이다.

  • insert x: $S$에 정수 $x$를 추가한다. 이미 $x$가 있다면 아무 일도 일어나지 않는다. $(-10^9 \leq x \leq 10^9)$
  • erase x: $S$에서 정수 $x$를 삭제한다. $x$가 없다면 아무 일도 일어나지 않는다. $(-10^9 \leq x \leq 10^9)$
  • order_of_key x: $S$에서 $x$보다 작은 원소의 개수를 출력한다. $(-10^9 \leq x \leq 10^9)$
  • find_by_order i: $S$에서 $i$번째로 작은 원소를 출력한다.
  • size: $S$의 크기를 출력한다.

find_by_order 쿼리는 항상 올바른 상태에서만 주어진다.

입력

첫 번째 줄에 쿼리의 개수 $Q$가 주어진다. $(1 \leq Q \leq 100\,000)$

두 번째 줄부터 $Q$개의 줄에 걸쳐 쿼리가 하나씩 주어진다.

출력

order_of_key, find_by_order, size 쿼리가 주어질 때마다 쿼리의 결과를 한 줄에 하나씩 출력한다.

예제 입력 1

14
insert 5
insert 1
insert 8
insert 5
size
order_of_key 5
find_by_order 0
find_by_order 2
erase 5
order_of_key 8
size
insert 3
find_by_order 1
order_of_key 10

예제 출력 1

3
1
0
5
1
2
1
3

제출