/ Vijos / 题库 /

集合维护与查询

集合维护与查询

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


【题目描述】

  编程实现下列集合的维护操作:

  1 \(x\ y\):把集合中值为 \(x\) 的元素修改成 \(y\),若不存在 \(x\),则把 \(y\) 插入到集合中。
  2 \(k\):查询第 \(k\) 小的元素。
  3 \(x\):查询元素 \(x\) 的名次(由小到大排第几)。

  注意:任何时候集合中没有重复元素。

【输入格式】

  第 1 行为正整数 \(n\) 和 \(m\),分别表示集合中元素个数和操作数。
  第 2 行为 \(n\) 个整数,表示初始集合中的元素。
  接下来的 \(m\) 行,每行一个操作命令,格式见题目描述。

【输出格式】

  输出每个操作 2 和 3 的结果,若误解则输出None。

【输入输出样例】

 Input

6 8
3 5 1 8 2 9
1 2 6
2 3
3 6
1 1 7
1 2 0
3 2
3 3
2 6

 Output

5
4
None
2
8

【数据限制】

  对于 \(100\%\) 的数据,\(n,m≤200000\),集合中的元素是整数,且绝对值不超过 \(2*10^9\)。

【来源】

  Mr.he

信息

ID
2687
难度
9
分类
数据结构 | 平衡树 点击显示
标签
(无)
递交数
10
已通过
1
通过率
10%
被复制
1
上传者