#P14886. [OOI2019预选赛long]Дима и массив Dima与数组
[OOI2019预选赛long]Дима и массив Dima与数组
题目描述
Dima 并不是生日时收到数组 的,也不是买来的,更不是在路上捡到的;这个由 个整数组成的数组只是一直存在于他那里,而 Dima 对它的来历也并不感兴趣。
Dima 不拿这个数组玩,不把它送给 Petya,不把它切成碎片,也不想毁掉它。Dima 只是对数组执行两种操作:
? l r:询问多重集合 的 MEX;! i x:将 赋值为 ,其中 。
一个多重集合 的 MEX 定义为最小的整数 ,使得对于所有 ,都有 。
事实上,Dima 并不喜欢亲自执行这些操作。他只关心第一类操作的结果。请你帮 Dima 完成这些操作。
输入格式
第一行包含两个整数 ,表示数组长度和操作数。
第二行包含 个整数 ,表示操作开始前的数组。
接下来 行,每行描述一个操作,格式如题目描述所示。
满足:
$$1 \le n \le 500000,\quad 1 \le q \le 250000,\quad 0 \le a_i \le n.$$保证修改操作 ! 的总数不超过 。
数组下标从 开始。
输出格式
对于每个第一类操作 ? l r,输出一个整数,表示对应多重集合的 MEX。答案按输入中查询出现的顺序输出。
样例
6 8
4 1 0 2 2 3
? 1 6
? 4 6
? 2 5
? 2 6
! 3 3
? 1 6
! 4 0
? 1 6
5
0
3
4
0
5
样例解释
样例中的操作如下:
- 初始数组为 。
- 第一次查询求 的 MEX,答案为 。
- 第二次查询求 的 MEX,答案为 。
- 第三次查询求 的 MEX,答案为 。
- 第四次查询求 的 MEX,答案为 。
- 第五次操作修改数组,现在数组为 。
- 第六次查询求整个数组的 MEX,答案为 。
- 第七次操作修改数组,现在数组为 。
- 第八次查询再次求整个数组的 MEX,答案为 。
子任务
| 组别 | 分数 | 必须通过的组 | 说明 | |||
|---|---|---|---|---|---|---|
| 0 | — | — | — | 样例测试 | ||
| 1 | 11 | 0 | ||||
| 2 | 8 | 0,1 | ||||
| 3 | 12 | — | 0 | |||
| 4 | 19 | — | — | 没有修改操作 | ||
| 5 | 5 | 0–2 | ||||
| 6 | 0–2,5 | |||||
| 7 | 0–2,5,6 | |||||
| 8 | — | 0–2,5–7 | ||||
| 9 | 6 | 0–2,5–8 | 离线测试 | |||
| 10 | 0–2,5–9 | |||||
| 11 | 0–2,5–10 | |||||
| 12 | 0–2,5–11 | |||||
| 13 | — | 0–12 | ||||