#abc470c. Inc, Dec, Xor

    ID: 4381 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 3 Uploaded By: Tags>普及/提高-均摊分析位运算模拟

Inc, Dec, Xor

题目描述

有一个长度为 NN 的整数序列 A=(A1,A2,…,AN)A = (A_1, A_2, \ldots, A_N),初始时所有元素都是 00。

给出 QQ 个询问,请按顺序处理。询问有两种,格式如下:

  • 1 x:把 AxA_x 的值增加 11;
  • 2:对每个 i=1,2,…,Ni = 1, 2, \ldots, N,若 Ai≥1A_i \ge 1 则把 AiA_i 减少 11(等于 00 的保持不变)。

请在处理完每个询问之后,输出 A1,A2,…,ANA_1, A_2, \ldots, A_N 的按位异或(XOR\mathrm{XOR})值。

什么是按位异或?

非负整数 AA 与 BB 的按位异或 A⊕BA \oplus B 定义为:A⊕BA \oplus B 的二进制表示中 2k2^k 位上的数字,当 AA、BB 二进制表示中 2k2^k 位的数字恰有一个是 11 时为 11,否则为 00。

例如 3⊕5=63 \oplus 5 = 6(二进制:011⊕101=110011 \oplus 101 = 110)。多个数的异或与顺序无关。

输入格式

N Q
query_1
query_2
...
query_Q

其中每个询问是下面两种格式之一:

1 x
2

输出格式

输出 QQ 行,第 ii 行是处理完第 ii 个询问后所有元素的异或值。

输入示例 1

2 5
1 2
1 2
1 1
2
2

输出示例 1

1
2
3
1
0

示例 1 说明

  • 第 11 个询问后 A=(0,1)A = (0, 1),0⊕1=10 \oplus 1 = 1;
  • 第 22 个询问后 A=(0,2)A = (0, 2),0⊕2=20 \oplus 2 = 2;
  • 第 33 个询问后 A=(1,2)A = (1, 2),1⊕2=31 \oplus 2 = 3;
  • 第 44 个询问(类型 2)后 A=(0,1)A = (0, 1),异或为 11;
  • 第 55 个询问(类型 2)后 A=(0,0)A = (0, 0),异或为 00。注意第 11 个元素已经是 00,不会变成 −1-1。

输入示例 2

3 8
1 2
1 3
1 1
1 2
1 1
2
1 3
1 1

输出示例 2

1
0
1
2
1
0
1
2

示例 2 说明

第 66 个询问是类型 22:此前 A=(2,2,1)A = (2, 2, 1),全部减 11 后变成 (1,1,0)(1, 1, 0),异或为 1⊕1⊕0=01 \oplus 1 \oplus 0 = 0。

约束条件

  • 1≤N≤5×1051 \le N \le 5 \times 10^5
  • 1≤Q≤5×1051 \le Q \le 5 \times 10^5
  • 1≤x≤N1 \le x \le N
  • 所有输入值均为整数