集合维护与查询
时间限制: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