问题 5387 --和或异或

5387: 和或异或

题目描述

小明找来了一个 $2^n$ 长度的数组。它第一次先对所有相邻两个数执行 `|` 操作,得到一个 $2^{n-1}$ 长度的数组。也就是说,如果一开始时 $a[1],a[2],\cdots,a[2^n]$,执行操作后,会得到 $a[1]|a[2]$,$a[3]|a[4], \cdots,a[2^n-1]|a[2^n]$。 第二次操作,小明会将所有相邻两个数执行 `^` 操作,得到一个 $2^{n-2}$ 长度的数组,假如第一次操作后的数组是 $b[1],b[2],\cdots,b[2^{n-1}]$,执行操作后会变成 $b[1] \hat{ } b[2]$,$b[3] \hat{ } b[4],\cdots,b[2^{n-1}-1] \hat{ } [b^{n-1}]$。 第三次操作,小明仍然将执行 `|` 操作,第四次小明执行 `^` 操作。如此交替进行。 小明还会执行 $Q$ 次修改操作。每次修改原先的 $2^n$ 长度的数组中的某一个数,对于每次修改操作,你需要输出 $n$ 次操作后(最后一定只剩下唯一一个数)剩下的那个数是多少。

输入

第一行两个数 $n,Q$。 接下来一行 $2^n$ 个数 $a_i$ 表示一开始的数组。 接下来 $Q$ 行,每行两个数 $x_i,y_i$,表示小明这次的修改操作是将 $a_{x_i}$ 改成 $y_i$。

输出

$Q$行,表示每次修改操作后执行 $n$ 次操作后剩下的那个数的值。

样例输入输出

输入#1 复制
2 4
1 6 3 5
1 4
3 4
1 2
1 2
输出#1 复制
1
3
3
3

提示

【样例解释】 第一次修改,$4,6,3,5\to 6,7\to 1$。 第二次修改,$4,6,4,5\to 6,5 \to 3$。 第三次修改,$2,6,4,5 \to 6,5 \to 3$。 第四次修改,$2,6,4,5 \to 6,5\to 3$。 【数据范围】 对于 $30\%$ 的数据,$n \leq 17$,$Q=1$。 对于另外 $20\%$ 的数据,$n \leq 10$,$Q \leq 1000$。 对于另外 $30\%$ 的数据,$n \leq 12$,$Q \leq 100000$。 对于 $100\%$ 的数据,$1 \leq n \leq 17$,$1 \leq Q \leq 10^5$,$1 \leq x_i \leq 2^n$,$0 \leq y_i \leq 2^{30}$,$0 \leq a_i \leq 2^{30}$。
序号 标题 作者 发表时间 费用 订购数 操作