#P6019. [Ynoi2010] Brodal queue

[Ynoi2010] Brodal queue

Description

给定一个长为 nn 的序列 aa ,每个位置有一种颜色,有 mm 次操作,支持:

1 l r x:区间 [l,r][l,r] 的数都变成 xx

2 l r:查询有多少二元组 (i,j)(i,j) 满足 li<jrl \leq i < j \leq r ,且 ai=aja_i = a_j

本题强制在线,每次的 l,r,xl,r,x 需要 xor\operatorname{xor} 上(上次答案 mod232\bmod 2^{32}),也就是说使用 unsigned int 数据类型存储上次的答案即可,如果之前没有询问,则上次答案为 00。这里输出的答案不对 mod232\bmod 2^{32} 取模。

Input Format

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

第二行 nn 个整数表示序列 aa

之后 mm 行,每行形如 1 l r x2 l r,表示上述的操作。

Output Format

对于每个 22 操作,输出一行一个整数表示答案。

10 12
6 9 9 4 7 8 10 4 9 2
2 1 4
1 0 5 0
2 3 6
2 10 9
1 7 9 2
2 7 9
1 2 7 1
1 2 11 4
2 6 10
1 3 12 0
1 14 14 15
2 7 12

1
3
0
3
6
16

Hint

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

注意:本题采用捆绑测试,只有当你通过一个 subtask 中的所有测试点后,你才能拿到这个 subtask 的分数。

对于其中 1%1\% 的数据,为样例 1。

对于另外 9%9\% 的数据,没有修改操作。

对于另外 19%19\% 的数据,n,m500n,m\leq 500

对于另外 19%19\% 的数据,每次修改的区间长度不超过 55

对于另外 19%19\% 的数据,保证数据随机。

对于 100%100\% 的数据,1n,m2×1051\leq n,m\leq 2\times 10^51ai,xn1\leq a_{i},x\leq n1lrn1\leq l\leq r\leq n