/ Vijos / 题库 /

平衡树

平衡树

时间限制:1秒  内存限制:256M


【题目描述】

  设计一种维护集合的数据结构,支持如下操作:
  1. Insert \(x\):向集合中插入一个整数 \(x\)。
  2. Delete \(x\):删除集合中值为整数 \(x\) 的元素,若有多个相同的数,删除任意一个,若 \(x\) 不存则忽略。
  3. Count \(x\):查询集合中小于 \(x\) 的元素个数。
  4. Rank \(x\):查询整数 \(x\) 的名次,这里的名次表示第几小(最小的元素排名为 1 ),相同的数依次排名,不并列排名,若有多个相同的 \(x\),输出最小的名次。
  5. Kth \(k\):查询名次为 \(k\) 的数,名次的概念同 4。
  最开始,集合中已经有 \(n\) 个元素。

【输入格式】

  第 1 行包含两个整数 \(n,m\),\(n\) 表示最初集合中元素的个数,\(m\) 表示操作数目。
  第 2 行包含 \(n\) 个整数,表示开始集合中的元素 \(a[1]..a[n](|a[i]|≤10^9)\)。
  接下来的 \(m\) 行,每行的第一项分别是 Insert,Delete,Rank,Kth 和 Count 等操作,第二项为一个整数,为每个操作的参数,如果参数是 \(x\),则 \(0≤|x|≤10^9\),如果参数是 \(k\) ,则 \(0≤k≤10^9\)。

【输出格式】

  对应输入中的 Rank,Kth 和 Count操作,每个操作输出该操作的执行结果,对于 Rank 操作,若集合中不存在 \(x\),则输出 None,对于 Kth 操作,如果不能查询到第 \(k\) 小的元素,则输出"invalid"。

【输入输出样例】

 Input

5 24 
1 3 5 7 9
Rank 5
Kth 4
Count 4
Insert 6
Insert 10
Insert 0
Delete 7
Delete 3
Rank 9
Kth 1
Kth 6
Count 1
Delete 1
Kth 3
Insert 5
Insert 9
Delete 0
Delete 10
Rank 9
Rank 8
Count 9
Count 0
Count 11
Kth 10

 Output

3
7
2
5
0
10
1
6
4
None
3
0
5
invalid

【数据限制】

  对于 \(100\%\) 的数据,\(1≤n,m≤200000\)

【来源】

  Mr.he**

信息

ID
2670
难度
8
分类
数据结构 | 平衡树 点击显示
标签
(无)
递交数
21
已通过
3
通过率
14%
被复制
3
上传者