题目描述
一次小 G 和小 H 原本准备去聚餐,但由于太麻烦了于是题面简化如下:
一个转盘上有摆成一圈的 n 个物品(编号 1 至 n)其中第 i 个物品会在 Ti 时刻出现。
在 0 时刻时,小 G 可以任选 n 个物品中的一个,我们将其编号记为 s0。并且如果 i 时刻选择了物品 si,那么 i+1 时刻可以继续选择当前物品或者选择下一个物品。当 si 为 n 时,下一个物品为物品 1,否则下一个物品为 si+1。在每一时刻(包括 0 时刻),如果小 G 所选择的物品已经出现了,那么小 G 将会标记它。小 H 想知道,在物品选择的最优策略下,小 G 什么时候能标记所有物品?
但麻烦的是,物品的出现时间会不时修改。我们将其描述为 m 次修改,每次修改将改变其中一个物品的出现时间。每次修改之后,你也需要求出当前局面的答案。对于其中部分测试点,小 H 还追加了强制在线的要求。
输入格式
第一行三个非负整数 n,m,p,代表一共有 n 个物品,m 次修改。p 只有 0 或 1 两种取值,强制在线时 p 为 1,否则为 0。本节后面将解释如何使用 p。
接下来一行,有 n 个用空格隔开的非负整数,第 i 个数 Ti 代表物品 i 的出现时间。
接下来 m 行,每行两个非负整数 x,y,代表一次修改及询问。修改方式如下:
- 如果 p=0,则表示物品 x 的出现时间 Tx 修改为 y。
- 如果 p=1,则先将 x 和 y 分别异或 LastAns 得到 x′ 和 y′:即 x′=x⊕LastAns,y′=y⊕LastAns。然后将物品 x′ 的出现时间 Tx′ 修改为 y′ 。其中的 LastAns 是前一个询问的答案;特别的,第一次修改时的 LastAns 为初始局面的答案。其中的 ⊕ 为按位异或运算,例如 1⊕2=3,4⊕5=1,6⊕11=13。
保证输入合法。
输出格式
第一行一个整数代表初始局面的答案。
接下来 m+1 行每行一个整数分别代表每次修改后的答案。
5 3 0
1 2 3 4 5
3 5
5 0
1 4
5
7
6
7
数据范围与提示
| 测试点编号 |
n |
m |
Ti/Tx |
p |
| 1 |
≤10 |
=0 |
| 2 |
≤1000 |
=0 |
≤1000 |
| 3 |
≤105 |
≤105 |
| 4 |
≤5000 |
| 5 |
≤8×104 |
| 6 |
=1 |
| 7 |
≤9×104 |
=0 |
| 8 |
=1 |
| 9 |
≤105 |
=0 |
| 10 |
=1 |