题目描述
给定 n 个整数:
a1,a2,…,an,
你需要支持以下两种操作:
1 l r v:将区间 [l,r] 内的 ai 异或上 v,其中异或指的是二进制下按位异或。
2 l r k:求区间 [l,r] 内第 k 小的 ai。
输入格式
第一行输入三个整数 n,m,type。
接下来一行输入 n 个整数:
a1,a2,…,an.
接下来 m 行,每行输入 4 个整数,意义如上。
如果 type=1,则 k/v 需要异或 lastans,其中 lastans 表示上一次输出的答案,初始时为 0。
输出格式
对于每个 2 操作,输出一行一个整数,表示第 k 小的 ai 的值。
样例 1 输入
5 5 0
11 1 13 10 9
1 2 5 9
2 3 3 1
1 1 2 4
2 1 4 3
2 2 3 2
样例 1 输出
4
12
12
样例 2 输入
10 10 0
11 10 3 4 7 5 12 1 0 8
1 7 7 8
2 2 3 1
2 3 7 5
1 3 8 8
1 1 8 3
1 1 7 5
2 3 7 4
1 6 9 1
1 2 3 8
2 1 6 5
样例 2 输出
3
7
11
10
测试点约束
| 测试点 |
n≤ |
m≤ |
type |
特殊性质 |
| 1,2 |
5000 |
0 |
无 |
| 3,4 |
2×104 |
| 5∼8 |
5×104 |
| 9 |
105 |
A, B |
| 10 |
A |
| 11 |
B |
| 12,13 |
C |
| 14,15 |
D |
| 16∼18 |
无 |
| 19,20 |
1 |
特殊性质 A:若 opti=1,则 li=1,ri=n。
特殊性质 B:若 opti=2,则 li=1,ri=n。
特殊性质 C:所有修改操作都在查询操作前面。
特殊性质 D:数据随机生成。
对于所有测试点:
1≤n,m≤105,
ai,vi<264,
1≤li≤ri≤n,
1≤ki≤ri−li+1.