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$。 **数据规模及约定** ![](https://cdn.luogu.com.cn/upload/image_hosting/gk34w5vn.png)