/ Vijos / 题库 /

动态RKQ问题[1]

动态RKQ问题[1]

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


【题目描述】

  给定一个长度为 \(n\) 的整数数组 \(A[1]、A[2]、…、A[N](0≤A[i]≤100000)\),和 \(m\) 个操作:

  1、\(C\ i\ t\) 把 \(A[i]\) 的值改为 \(t(0≤t≤100000)\);

  2、\(Q\ i\ j\ k\) 查询连续子序列 \(A[i]..A[j]\) 中第 \(k\) 小元素(\(A[i]..A[j]\) 由小到大排序后的第 \(k\) 个元素)。

【输入格式】

  第一行包含两个整数 \(n\) 和 \(m\),表示数组有 \(n\) 个元素,\(m\) 表示有 \(m\) 个查询操作;
  接下来的一行包含 \(n\) 个整数,第 \(i\) 个整数表示 \(A[i]\);
  再接下来的 \(m\) 行,每行表示一个操作.

【输出格式】

  对于每一次询问,你都需要输出他的答案,每一个输出占单独的一行。

【输入输出样例】

 Input

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

 Output

3
6

【数据限制】

  对于 \(20\%\) 的数据,\(m,n≤100\)
  对于 \(40\%\) 的数据,\(m,n≤1000\)
  对于 \(100\%\) 的数据,\(m,n≤10000\),任何时候序列中的元素值不超过 100000。

【来源】

  Mr.he

信息

ID
2580
难度
9
分类
数据结构 | 线段树 点击显示
标签
(无)
递交数
7
已通过
1
通过率
14%
被复制
4
上传者