描述 Description
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:
- 插入 x x x数
- 删除 x x x数(若有多个相同的数,因只删除一个)
- 查询 x x x数的排名(若有多个相同的数,因输出最小的排名)
- 查询排名为 x x x的数
- 求 x x x的前驱(前驱定义为小于 x x x,且最大的数)
- 求 x x x的后继(后继定义为大于 x x x,且最小的数)
输入 Input
第一行为 n n n,表示操作的个数,下面 n n n行每行有两个数 o p t opt opt和 x x x, o p t opt opt表示操作的序号 ( 1 ≤ o p t ≤ 6 ) (1≤opt≤6) (1≤opt≤6)
输出 Output
对于操作 3 , 4 , 5 , 6 3,4,5,6 3,4,5,6每行输出一个数,表示对应答案
样例输入 #1 Sample Input #1
8
1 10
1 20
1 30
3 20
4 2
2 10
5 25
6 -1
样例输出 #1 Sample Output #1
2
20
20
20
样例输入 #2 Sample Input #2
10
1 106465
4 1
1 317721
1 460929
1 644985
1 84185
1 89851
6 81968
1 492737
5 493598
样例输出 #2 Sample Output #2
106465
84185
492737
限制 Limits
1.n的数据范围: n ≤ 100000 n≤100000 n≤100000
2.每个数的数据范围: [ − 1 0 7 , 1 0 7 ] [-10^7,10^7] [−107,107]
Time Lmit : 1 s 1s 1s & Memory Limit : 128 M B 128MB 128MB
标题都告诉平衡树了还写线段树?(雾)
直接SBT水过
顺便把SBT能干的都打出来了
上代码
Code