P15107 【模板】Wavelet Matrix
题目背景
**请注意本题并不寻常的数据范围与时空限制。**
题目描述
给定一个长度为 $n$ 的序列 $a_{1\sim n}$。$m$ 次查询,给定 $op,l,r,k$:
- 若 $op=0$,查询区间 $[l,r]$ 内有多少个数小于 $k$。
- 若 $op=1$,查询区间 $[l,r]$ 内第 $k$ 小的数。
强制在线。
输入格式
由于 IO 量过大,数据使用随机生成。你可以使用以下方式获取 $a_{1\sim n}$ 以及每次询问的 $op,l,r,k$:
```cpp
typedef unsigned uint;
const int MAXN = 4e6 + 10;
const uint mask = 0x5f3759dfu;
uint seed, lst;
inline uint rnd() {
seed ^= lst ^ mask;
seed ^= seed > 7;
seed ^= seed
输出格式
一行一个非负整数,表示所有查询的答案的异或和。
说明/提示
#### 【样例 1 解释】
解密后的输入如下:
```cpp
5 5
3453473247 1341133007 2686835293 4244725722 2878739094
0 3 5 4197138810
1 2 5 2
1 2 3 2
1 1 5 2
1 3 5 3
```
其中第一行为 $n,m$,第二行为 $a_{1\sim n}$,接下来 $m$ 行为询问。
#### 【数据范围】
**本题开启捆绑测试。**
|$\text{Subtask}$|$n,m\le$|分值|
|:-:|:-:|:-:|
|$1$|$500$|$10$|
|$2$|$5000$|$20$|
|$3$|$2\times 10^5$|$30$|
|$4$|$4\times 10^6$|$40$|
对于 $100\%$ 的数据,$1\le n,m\le 4\times 10^6$,$0\le seed