/ Vijos / 题库 /

集合动态维护

集合动态维护

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


【题目描述】

  你需要写一种数据结构,来维护一个集合 \(A\)(元素可重复),需要支持如下操作:

  1. Insert(A,x):向集合 \(A\) 中插入一个整数 \(x\)。

  2. Delete(A,x):删除集合 \(A\) 中值为整数 \(x\) 的元素,若有多个相同的数,只删除一个,若 \(x\) 不存则忽略。

  3. Count(A,x):查询集合中小于 \(x\) 的元素个数。

  4. Kth(A,k):查询名次为 \(k\) 的数,这里的名次表示第几小(最小元素排名为 1),相同的数依次排名,名次不并列。

  5. Ask(A,x,y):查询集合中属于区间 [x,y] 的元素个数。

   特别注意,任何时候集合中的元素都是[0,1000000]范围内的整数!

【输入格式】

  第 1 行包含两个整数 \(n,m\),\(n\) 表示最初集合 \(A\) 中元素的个数,\(m\) 表示操作数目。
  第 2 行包含 \(n\) 个整数,表示开始集合 \(A\) 中的元素 \(a[1]..a[n]\)。
  接下来的 \(m\) 行,每行的第一项分别是 Insert,Delete,Ask,Kth 和 Count 等操作,第二项为操作参数,意义如题目描述。

【输出格式】

  对应输入中的Ask,Kth和Count操作,每个操作输出该操作的执行结果。对于Kth操作,如果不能查询到第k小的元素,则输出"invalid"。

【输入输出样例】

 Input

5 17
2 6 1 0 3
Kth 3
Insert 4
Count 4
Insert 8
Ask 2 7
Delete 0
Kth 5
Insert 7
Count 7
Delete 1
Insert 10
Insert 5
Delete 6
Ask 1 10
Kth 5
Delete 4
Kth 10

 Output

2
4
4
6
5
7
7
invalid

【数据限制】

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

【来源】

  Mr.he

信息

ID
2553
难度
(无)
分类
数据结构 | 线段树 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
1
上传者