#CF1004F. Sonya 与按位或

Sonya 与按位或

F. Sonya 与按位或
时间限制:每个测试点 44
内存限制:512512 兆字节

Sonya 有一个由 nn 个整数组成的数组 a1,a2,,ana_1, a_2, \dots, a_n,以及一个非负整数 xx。她需要执行 mm 个查询,查询有两种类型:

  1. 1 i y:将第 ii 个元素替换为 yy,即执行 ai:=ya_i := y
  2. 2 l r:求满足 lLRrl \le L \le R \le r 且区间 [L,R][L, R] 内所有整数的按位或结果至少为 xx 的区间对 (L,R)(L, R) 的数量(注意 xx 对所有查询是固定的)。

请帮助 Sonya 执行所有查询。

按位或是对两个非负整数进行的一种二元运算。计算两个数的按位或时,需要将两个数写成二进制形式,结果在二进制下,某一位是 11 当且仅当至少一个数的这一位是 11。例如,1010 OR 19=1010219 = 1010_2 OR 100112=110112=2710011_2 = 11011_2 = 27


输入格式
第一行包含三个整数 n,m,xn, m, x1n,m1051 \le n, m \le 10^50x<2200 \le x < 2^{20})——数组长度、查询次数和常数 xx

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai<2200 \le a_i < 2^{20})。

接下来的 mm 行每行描述一个查询,格式如下:

  • 1 i y1in1 \le i \le n0y<2200 \le y < 2^{20}):将 aia_i 替换为 yy
  • 2 l r1lrn1 \le l \le r \le n):查询区间 [l,r][l, r] 内所有子数组的按位或结果是否 x\ge x

输出格式
对于每个类型 22 的查询,输出一个整数——满足条件的子数组个数。


样例输入 1

4 8 7
0 3 6 1
2 1 4
2 3 4
1 1 7
2 1 4
2 1 3
2 1 1
1 3 0
2 1 4

样例输出 1

5
1
7
4
1
4

样例输入 2

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

样例输出 2

9
7
2
4

样例 1 解释

初始数组为 [0,3,6,1][0, 3, 6, 1]

  • 查询 [1,4][1, 4]:符合条件的子数组为 (1,3),(1,4),(2,3),(2,4),(3,4)(1,3), (1,4), (2,3), (2,4), (3,4),共 55 个;
  • 查询 [3,4][3, 4]:只有 (3,4)(3,4),共 11 个;
  • a1a_1 替换为 77,数组变为 [7,3,6,1][7, 3, 6, 1]
  • 查询 [1,4][1, 4]:符合条件的子数组有 (1,1),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)(1,1), (1,2), (1,3), (1,4), (2,3), (2,4), (3,4),共 77 个;
  • 查询 [1,3][1, 3]:符合条件的子数组有 (1,1),(1,2),(1,3),(2,3)(1,1), (1,2), (1,3), (2,3),共 44 个;
  • 查询 [1,1][1, 1]:只有 (1,1)(1,1),共 11 个;
  • a3a_3 替换为 00,数组变为 [7,3,0,1][7, 3, 0, 1]
  • 查询 [1,4][1, 4]:符合条件的子数组有 (1,1),(1,2),(1,3),(1,4)(1,1), (1,2), (1,3), (1,4),共 44 个。

样例 2 解释

初始数组 [6,0,3,15,2][6, 0, 3, 15, 2]

  • 查询 [1,5][1, 5]:符合条件的子数组有 $(1,3), (1,4), (1,5), (2,4), (2,5), (3,4), (3,5), (4,4), (4,5)$,共 99 个;
  • a4a_4 替换为 44,数组变为 [6,0,3,4,2][6, 0, 3, 4, 2]
  • 查询 [1,5][1, 5]:符合条件的子数组有 (1,3),(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)(1,3), (1,4), (1,5), (2,4), (2,5), (3,4), (3,5),共 77 个;
  • 查询 [3,5][3, 5]:符合条件的子数组有 (3,4),(3,5)(3,4), (3,5),共 22 个;
  • 查询 [1,4][1, 4]:符合条件的子数组有 (1,3),(1,4),(2,4),(3,4)(1,3), (1,4), (2,4), (3,4),共 44 个。