P12485 [集训队互测 2024] PM 大师
题目背景
小 C 正在堆尸解隐藏曲的时候,他的好朋友小 A 随手就 Pure Memory 了。
小 C 也想成为像小 A 一样的 PM 大师,所以他需要你解决一个关于 PM(Prefix Mex)的问题。
题目描述
__注意,本题对 $\operatorname{mex}$ 的定义与一般的定义不同。__
对于可重集 $S$ 定义 $\operatorname{mex}(S)$ 表示最小的 __正整数__ $x$ 满足 $x\notin S$。
对于给定的数组 $a_1,a_2,\dots,a_n$,保证 $-1\le a_i\le n$,使用以下的方式生成数组 $b_1,b_2,\dots,b_n$:
$$
b_i=\begin{cases}a_i&a_i\ne 0\\ \operatorname{mex}(\{b_1,b_2,\dots,b_{i-1}\})&a_i=0\end{cases}
$$
现在给定长度为 $n$ 的数组 $a_1,a_2,\dots,a_n$,__保证初始时 $a_i\in \{-1,0\}$ 且数组 $a$ 不全为 $0$__。
给定 $q$ 次操作,每次操作给定三个整数 $x,k,y$,保证 $1\le x,y\le n$,$a_x\ne 0$,$-1\le k\le n$ 且 $k\ne 0$。表示先将 $a_x$ 修改为 $k$,然后你需要求出使用当前的数组 $a$ 所生成的数组 $b$ 中 $b_y$ 的值。
__注意,任意时刻为 $0$ 的 $a_i$ 不会被修改,不为 $0$ 的 $a_i$ 不会被修改为 $0$。__
输入格式
第一行两个正整数 $n,q$。
第二行 $n$ 个整数,描述 $a_1,a_2,\dots,a_n$,保证初始时 $a_i\in \{-1,0\}$ 且数组 $a$ 不全为 $0$。
接下来 $q$ 行,每行 $3$ 个整数 $x,k,y$,描述一次操作。
输出格式
共 $q$ 行,第 $i$ 行输出一个整数表示使用第 $i$ 次修改操作后的数组 $a$ 所生成的数组 $b$ 中 $b_y$ 的值。
说明/提示
__样例 2:__ 见下发文件,其满足子任务 $1$ 的限制。
### 数据范围
对于 $100\%$ 的数据,保证 $1\le n,q\le 10^6$,$a_i\in \{-1,0\}$,$1\le x,y\le n$,$a_x\ne 0$,$-1\le k\le n$ 且 $k\ne 0$。保证数组 $a$ 不全为 $0$。
| 子任务编号 | 特殊性质 | 分值 |
| :--------: | :------------------------------: | ---- |
| $1$ | $n,q\le 10^4$ | $10$ |
| $2$ | 初始时序列 $a$ 单调不降 | $10$ |
| $3$ | $k\le 100$ | $10$ |
| $4$ | 序列 $a$ 中 $0$ 的数量 $\le 100$ | $10$ |
| $5$ | 每次修改前 $a_x=-1$ | $30$ |
| $6$ | 无 | $30$ |