题目描述
您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:
- 插入xxx数
- 删除xxx数(若有多个相同的数,因只删除一个)
- 查询xxx数的排名(排名定义为比当前数小的数的个数+1+1+1。若有多个相同的数,因输出最小的排名)
- 查询排名为xxx的数
- 求xxx的前驱(前驱定义为小于xxx,且最大的数)
- 求xxx的后继(后继定义为大于xxx,且最小的数)
输入输出格式
输入格式: 第一行为nnn,表示操作的个数,下面nnn行每行有两个数optoptopt和xxx,optoptopt表示操作的序号( 1≤opt≤6 1 \leq opt \leq 6 1≤opt≤6 )
输出格式: 对于操作3,4,5,63,4,5,63,4,5,6每行输出一个数,表示对应答案
输入输出样例
输入样例#1: 101 1064654 11 3177211 4609291 6449851 841851 898516 819681 4927375 493598
输出样例#1: 10646584185492737
说明
时空限制:1000ms,128M
1.n的数据范围: n≤100000 n \leq 100000 n≤100000
2.每个数的数据范围: [−107,107][-{10}^7, {10}^7][−107,107]
来源:Tyvj1728 原名:普通平衡树
在此鸣谢
Splay Tree 即可;而且好写;
#include #include #include #include #include #include #include #include