U644824 简单的平衡树问题
题目描述
给你一个长度为 $n$ 的数列 $a_1, a_2, \ldots, a_n$。
接下来有 $q$ 次操作,操作分为如下种类型:
- `1 p x`:将 $a_p$ 修改为 $x$;
- `2 x`:查询 $x$ 在数列 $a$ 中的排名(数据保证 $x$ 肯定存在,$x$ 的排名定义为数列 $a$ 中比 $x$ 小的数字个数 $+ 1$)
- `3 k`:查询排名第 $k$ 的那个数(排名第 $k$ 的那个数指数列 $a$ 从小到大排序后排在第 $k$ 位的那个数)
- `4 x`:查询 $x$ 的前驱,即数列 $a$ 中小于 $x$ 的数中最大的那个数,如果没有这样的数则前驱 $= - 1$
- `5 x`:查询 $x$ 的后继,即数列 $a$ 中大于 $x$ 的数中最小的那个数,如果没有这样的数则后继 $= -1$
输入格式
第一行,两个整数 $n$ 和 $q$,分别表示数列长度以及操作次数。
第二行,$n$ 个整数 $a_1, a_2, \ldots, a_n$,以空格分隔。
接下来 $q$ 行,每行包含一个操作。
输出格式
对于每次查询操作,输出一行,包含一个整数,表达式答案。
说明/提示
#### 数据规模与约定
- 对于 $100\%$ 的数据,$1 \le n,q \le 2 \cdot 10^5$,$1 \le a_i,x \le 10^9$,$1 \le p,k \le n$