# 这题是你自己出的 时间限制:1.5 秒。内存限制:128 MiB。参考 [评测环境与性能](../../../docs/评测环境与性能.md)。 ## 背景故事 这题明明是你自己出的,但现在完全不会做了。 ## 形式化问题描述 给定长度为 $n$ 的整数序列 $a$ ,依次处理 $m$ 个操作。解密后的操作为: - `1 x v` :令 $a_x=v$ . - `2 l_1 r_1 l_2 r_2` :输出满足 $l_1\le x\le r_1$ 、$l_2\le y\le r_2$ 且 $a_x=a_y$ 的有序对 $(x,y)$ 数量。区间可以重叠,$x=y$ 合法;两个方向分别计数。 令 `last` 为最近一次查询的答案,初始为零;修改操作不改变 `last` .操作行中的**所有整数,包括操作类型**都按下列方式编码:把实际整数 $z$ 化为 $z\bmod2^{64}$ 的非负余数,再与 `last` 做64位按位异或,输出结果的无符号十进制表示。 解码后,操作类型和下标直接作为非负整数。修改值的解码位串若小于 $2^{63}$ ,其值不变;否则减去 $2^{64}$ 得到负数。前两行的 $n,m$ 和初始序列不编码。保证解密后的操作合法。 ## 输入格式 第一行包含未编码的 `n m` .第二行包含 $n$ 个未编码的有符号整数 $a_i$ .接下来 $m$ 行为编码后的操作;先解码类型,再确定该行还有2个或4个参数。所有编码字段在 $[0,2^{64}-1]$ 内。 ## 输出格式 每个查询输出一行一个未编码的整数答案。答案可达到 $n^2$ ,请使用64位整数。 ## 样例 1 ### 输入 ```text 4 4 -1 2 -1 2 2 1 4 1 4 9 10 18446744073709551607 10 9 11 10 12 4 4 4 4 4 ``` ### 输出 ```text 8 6 1 ``` ## 样例 2 ### 输入 ```text 1 3 1000000000 2 1 1 1 1 0 0 18446744072709551617 3 0 0 0 0 ``` ### 输出 ```text 1 1 ``` ## 样例解释 样例1的明文操作依次是 `(2,1,4,1,4)` 、`(1,2,-1)` 、`(2,1,3,2,4)` 、`(2,2,2,2,2)` .首个答案为8,修改后,区间 $[1,3]$ 与 $[2,4]$ 的查询答案为6,单点与自身配对的答案为1。 ![两个区间可以重叠。以值分组后,各值在两个区间中的出现次数相乘,再求和。](assets/example.svg) 两个区间可以重叠。以值分组后,各值在两个区间中的出现次数相乘,再求和。 ## 数据范围与保证 $1\le n\le10^5$ ,$1\le m\le10^4$ ,$|a_i|,|v|\le10^9$ ,$1\le x\le n$ ,$1\le l_j\le r_j\le n$ .这些范围均指实际值。 规格重新设计:Codex(GPT-6);补上初始数组输入,确定全部操作字段加密及有符号值的64位编码,固定规模。 | 分值 | 额外限制 | | --- | --- | | 20% | $n\le50,\ m\le100$ | | 30% | $n,m\le2000$ | | 50% | 无额外限制 |