P2617 Dynamic Rankings

题目描述

给定一个含有 $n$ 个数的序列 $a_1,a_2 \dots a_n$,需要支持两种操作: - `Q l r k` 表示查询下标在区间 $[l,r]$ 中的第 $k$ 小的数; - `C x y` 表示将 $a_x$ 改为 $y$。

输入格式

第一行两个正整数 $n,m$,表示序列长度与操作个数。 第二行 $n$ 个整数,表示 $a_1,a_2 \dots a_n$。 接下来 $m$ 行,每行表示一个操作,都为上述两种中的一个。

输出格式

对于每一次询问,输出一行一个整数表示答案。

说明/提示

**【数据范围】** 对于 $10\%$ 的数据,$1\le n,m \le 100$; 对于 $20\%$ 的数据,$1\le n,m \le 1000$; 对于 $50\%$ 的数据,$1\le n,m \le 10^4$; 对于 $100\%$ 的数据,$1\le n,m \le 10^5$,$1 \le l \le r \le n$,$1 \le k \le r-l+1$,$1\le x \le n$,$0 \le a_i,y \le 10^9$。 请注意常数优化,但写法正常的整体二分和树套树都可以以大约 $1000\text{ms}$ 每个点的时间通过。 来源:bzoj1901。 本题数据为洛谷自造数据,使用 [CYaRon](https://github.com/luogu-dev/cyaron) 耗时 $5$ 分钟完成数据制作。