#P5612. [Ynoi2013] Ynoi

[Ynoi2013] Ynoi

题目描述

维护一个由n个非负整数构成的序列 a1,a2,a3,,ana_1,a_2,a_3,\ldots,a_n,支持三种操作:

  1. 给定区间 [l,r][l,r],将对应区间内的数异或上 xx
  2. 给定区间 [l,r][l,r],将对应区间内的数从小到大排序。
  3. 给定区间 [l,r][l,r],求区间内的数的异或和。

输入格式

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

第二行 nn 个整数 aia_i,表示原序列。

接下来 mm 行,每行三个整数 opt,l,ropt,l,ropt{2,3}opt\in\{2,3\})或四个整数 opt,l,r,xopt,l,r,xopt=1opt=1)表示对应的操作。

输出格式

对每个操作 33,输出一行,表示对应的答案。

5 3
1 4 2 8 3
2 1 3
1 2 4 5
3 1 2
6

提示

Idea:ccz181078,Solution:ccz181078,Code:ccz181078&nzhtl1477,Data:ccz181078

样例解释

原序列为 1 4 2 8 31\ 4\ 2\ 8\ 3

将区间 [1,3][1,3] 排序,得到 [1 2 4] 8 3[1\ 2\ 4]\ 8\ 3

将区间 [2,4][2,4]55 按位取异或,2 xor 5=72\ \mathrm{xor}\ 5 = 74 xor 5=14\ \mathrm{xor}\ 5 = 18 xor 5=138\ \mathrm{xor}\ 5 = 13,得到 1 [7 1 13] 31\ [7\ 1\ 13]\ 3

查询区间 [1,2][1,2] 的异或和,[1 7] 1 13 3[1\ 7]\ 1\ 13\ 31 xor 7=61\ \mathrm{xor}\ 7 = 6

数据范围

1 n,m 1051 \le n,m \le 10^50 ai,x<1080 \le a_i,x<10^8