#P1075. 简单平衡树
简单平衡树
简单平衡树
题目描述
平衡树是一种高级数据结构,他可以在不超过 的复杂度内完成序列的 增删改查。
Orange最近迷上了树学与应用树学,他钟爱平衡树这种数据结构,因此他想请你帮他完成一颗平衡树,维护一个从小到大的有序序列,支持下列操作:
- 增加一个数 。
- 删除一个数 。(如果序列中存在多个 ,则只删除一个,如果不存在 ,则忽略该操作)
- 查询一个数 在序列中的数量。
- 查询一个数 的前驱。(即序列中小于 的最大值;如果不存在请输出
-1) - 查询一个数 的后继。(即序列中大于 的最小值;如果不存在请输出
-1) - 输出当前序列;如果序列为空则输出
-1。
输入格式
输入第一行包含一个整数 ,表示操作的指令数。
接下来 行,每行包括一条指令:
op (x)
为上述题意,如果 为1-5;则后面还会跟一个整数 。
题目保证指令6不会超过100条。同时对于操作3-5;不保证 一定存在于序列当中。
输出格式
对于每个查询,输出答案。
样例 #1
样例输入 #1
10
1 1
1 2
1 5
3 1
1 1
3 1
2 1
4 5
5 5
6
样例输出 #1
1
2
2
-1
1 2 5
提示
在执行完成1-3条指令后面,序列为 。
此时执行第4条指令,查询 的个数,答案为 。
然后执行第5和6条指令,查询 的个数,答案为 。
执行第7条指令,删除一个 ,此时序列为 。
执行第8条指令,查询 的前驱,答案为 。
执行第9条指令,查询 的后继,由于 不存在后继,因此答案为 。
执行第10条指令,输出当前序列,为。