问题 E: 动态排名(平衡树)

问题 E: 动态排名(平衡树)

时间限制: 2 Sec  内存限制: 256 MB
提交: 4  解决: 0
[提交] [状态] [讨论版] [命题人:]

题目描述

对于一个长度为n的数列a,你需要高效地维护如下两种操作:
(1)修改,将某个数a[i]改为指定的值t;
(2)查询,询问区间[i,j]中第k小的数字是多少。

输入

输入数据第一行包含两个整数n和m,其中1≤n≤50000,1≤m≤10000,分别代表数列的长度以及指令数。
接下来一行n个数,代表这个数列。
接下来m行,每行代表一个操作。如果是查询操作,那么会以“Q i j k”的形式给出;如果是修改操作,那么会以"C i t“形式给出。

输出

对于每个查询,输出一行一个整数,对应查询的结果。

样例输入 Copy

5 3
3 2 1 4 7
Q 1 4 3
C 2 6
Q 2 5 3

样例输出 Copy

3
6

提示

【数据及时间和空间限制】
有20%的数据,n和m均不超过1000。
时间限制为2秒,空间限制为256MB。