#pHSlydlt40x4601. 普通平衡树
普通平衡树
题目描述
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:
- 插入数值 。
- 删除数值 (若有多个相同的数,应只删除一个)。
- 查询数值 的排名(若有多个相同的数,应输出最小的排名)。(保证查询时数值 存在)
- 查询排名为 的数值。(保证查询时排名为 的数值存在)
- 求数值 的前驱(前驱定义为小于 的最大的数)。
- 求数值 的后继(后继定义为大于 的最小的数)。
注意:数据保证查询的结果一定存在。
输入格式
第一行为 ,表示操作的个数。
接下来 行每行有两个数 和 , 表示操作的序号 。
输出格式
对于操作 每行输出一个数,表示对应答案。
样例
输入样例:
8
1 10
1 20
1 30
3 20
4 2
2 10
5 25
6 -1
输出样例:
2
20
20
20
样例解释
初始集合为空。
- 插入 10 → 集合 {10}
- 插入 20 → 集合 {10,20}
- 插入 30 → 集合 {10,20,30}
- 查询 20 的排名:从小到大排序为 [10,20,30],20 的排名为 2
- 查询排名为 2 的数值:即 20
- 删除 10 → 集合 {20,30}
- 查询 25 的前驱:小于 25 的最大数是 20
- 查询 -1 的后继:大于 -1 的最小数是 20
数据范围
- 所有数值均在 到 内。
时空限制
- 时间限制:1 秒
- 空间限制:64 MB
所有题目整理完毕。