T256382 [CZOI Online #2] 序列
题目描述
Caiwen 犯懒了,直接把 CZOI2023 中原本的一道题搬了过来。
给定一个长度为 $n$ 的序列 $a_1,a_2,a_3...a_n$。
接下来有 $m$ 个操作,第 $i$ 个操作给出三个数 $f_i$, $g_i$ 和 $t_i$ ,表示将序列中 $f_i$ 和 $g_i$ 位置之间的数全部加上 $t_i$。
求经过 $m$ 次操作后序列中第 $k$ 大的数。
输入格式
第一行,三个数 $n$,$m$,$k$。
第二行,四个数 $A$,$B$,$C$,$P$。
第三行,$n$ 个数,表示 $a_1,a_2,a_3....a_n$。
接下来 $m$ 行,每行三个数 $f_i,g_i,t_i$。
由于本题的输入数据非常大,为了减少输入数据所消耗的时间,本题第三行以及第三行往后的数据都需要根据第二行的四个数产生,具体如下:
你需要将下面的代码插入到你的程序中
```cpp
int A,B,C,P;
inline int rnd(){return A=(A*B+C)%P;};
inline int get(){return rnd()%n+1;};
```
然后接下来的数据读入,直接调用 `get()`,而不是使用 `cin>>` 或者是 `scanf()`
例如,第三行的 $n$ 个数,你需要像下面一样读入:
```cpp
for(int i=1;i
输出格式
一行,一个数,经过 $m$ 次操作后序列中第 $k$ 大的数。
说明/提示
**样例说明**
$a$ 序列为:
`3 1 5 1 5`
$m$ 次操作为:
```
5 5 5
2 2 3
2 1 1
```
经过 $m$ 次操作后,序列变为:
`4 5 5 1 10`
其中第 $2$ 大的数为 $5$。
**补充说明**
如果操作后序列类似于下面这样:
`1 5 5`
其中第 $2$ 大的数我们认为是 $5$ 而不是 $1$。
**数据规模及约定**
