你需要帮珂朵莉维护一个长为 n 的 01
序列 a,有 m 个操作:
1 l r
:把区间 [l,r] 的数变成 0。2 l r
:把区间 [l,r] 的数变成 1。3 l r
:[l,r−1] 内所有数 ai,变为 ai 与 ai+1 按位或的值,这些数同时进行这个操作。4 l r
:[l+1,r] 内所有数 ai,变为 ai 与 ai−1 按位或的值,这些数同时进行这个操作。5 l r
:[l,r−1] 内所有数 ai,变为 ai 与 ai+1 按位与的值,这些数同时进行这个操作。6 l r
:[l+1,r] 内所有数 ai,变为 ai 与 ai−1 按位与的值,这些数同时进行这个操作。7 l r
:查询区间 [l,r] 的和。
本题强制在线,每次的 l,r 需要与上次答案做 xor 运算,如果之前没有询问,则上次答案为 0。
输入格式
第一行两个整数表示 n 和 m。
第二行 n 个整数表示序列 a。
之后 m 行,每行三个整数 opt,l,r,表示是哪一种操作以及操作对应的区间。
输出格式
对于每个查询操作输出一行一个数表示答案。
样例数据
样例输入
5 5
0 1 0 0 1
3 2 5
5 2 5
2 2 2
6 1 5
7 1 5
样例输出
1
样例解释
序列每次的样子: 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1
子任务
Idea:nzhtl1477,Solution:nzhtl1477,Code:nzhtl1477,Data:nzhtl1477
对于 30% 的数据,n,m≤1000。
对于 50% 的数据,n,m≤105。
对于另外 30% 的数据,操作和序列均随机生成。
对于另外 10% 的数据,n,m≤106。
对于 100% 的数据,1≤n,m≤3×106,0≤ai≤1。