#P1106. 星轨计算器

星轨计算器

题目背景

在遥远的未来,人类建立了银河星轨计算阵列。阵列由 nn 个能量节点组成(nn 恰好为 22 的整数次幂),每个节点存储着一个非负整数能量值。

相邻节点之间通过"能量门"连接,能量门按层级交替运算:

  • 11 层门做**按位与(AND)**运算
  • 22 层门做**按位或(OR)**运算
  • 33 层门做**按位与(AND)**运算
  • 依此类推,交替进行

每次操作后,阵列最终会输出一个数值(根节点的值)。

题目描述

给定一个长度为 nn 的数组 aan=2kn = 2^k),按上述规则逐层运算,最终得到一个值 vv

形式化地,定义 a(0)=a1,a2,,ana^{(0)} = a_1, a_2, \dots, a_n 为第 00 层(输入层)。对于第 tt 层(1tk1 \le t \le k),其长度为 n/2tn / 2^t,计算公式为:

$$a^{(t)}_i = \begin{cases} a^{(t-1)}_{2i-1} \ \&\ a^{(t-1)}_{2i}, & \text{若 } t \text{ 为奇数} \\[4pt] a^{(t-1)}_{2i-1} \ |\ a^{(t-1)}_{2i}, & \text{若 } t \text{ 为偶数} \end{cases}$$

最终 v=a1(k)v = a^{(k)}_1

现在有 mm 次修改操作,每次操作给定 ppbb,表示将 a[p]a[p] 的值修改为 bb。每次修改后,请输出新的最终值 vv

输入格式

第一行两个整数 n,mn, m

第二行 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,表示初始数组。

接下来 mm 行,每行两个整数 p,bp, b,表示将 a[p]a[p] 修改为 bb

输出格式

对于每次修改,输出一行一个整数,表示修改后阵列的最终输出值。

样例

4 3
5 3 8 6
2 7
3 2
1 15
5
7
7

样例解释

初始 a=[5,3,8,6]a = [5,3,8,6]

11 层(AND):5 & 3=15\ \&\ 3 = 18 & 6=08\ \&\ 6 = 0

22 层(OR):1  0=11\ |\ 0 = 1

初始输出为 11


11 次修改:a[2]=7a[2] = 7a=[5,7,8,6]a = [5,7,8,6]

11 层(AND):5 & 7=55\ \&\ 7 = 58 & 6=08\ \&\ 6 = 0

22 层(OR):5  0=55\ |\ 0 = 5

输出 55


22 次修改:a[3]=2a[3] = 2a=[5,7,2,6]a = [5,7,2,6]

11 层(AND):5 & 7=55\ \&\ 7 = 52 & 6=22\ \&\ 6 = 2

22 层(OR):5  2=75\ |\ 2 = 7

输出 77


33 次修改:a[1]=15a[1] = 15a=[15,7,2,6]a = [15,7,2,6]

11 层(AND):15 & 7=715\ \&\ 7 = 72 & 6=22\ \&\ 6 = 2

22 层(OR):7  2=77\ |\ 2 = 7

输出 77

数据范围和约定

测试点 nn mm 说明
181 \sim 8 n26n \le 2^6 m60m \le 60 Part 1,暴力可过
9189 \sim 18 n217n \le 2^{17} m105m \le 10^5 Part 2,需线段树
192019 \sim 20 特殊边界 全等值 / 最小规模

对于所有数据:1n2171 \le n \le 2^{17}n=2kn = 2^kkk 为正整数),1m1051 \le m \le 10^50ai,b<2300 \le a_i, b < 2^{30}1pn1 \le p \le n