CF1275E3 Контрольная сумма
题目描述
在 VKontakte 中,用户的数据存储在数万台服务器上。为了检测数据在写入时可能出现的错误,系统会定期将 CRC32([Wiki](https://en.wikipedia.org/wiki/Cyclic_redundancy_check),IEEE 802-3)校验和写入磁盘。这样,在读取数据时,我们可以重新计算校验和,检查数据和校验和是否正确。
大多数 VKontakte 的服务中都有校验和检查机制。然而,有一次需要修改一个数据段中四个连续字节的值——即将序列 $a_i, a_{i+1}, a_{i+2}, a_{i+3}$ 替换为 $x_0, x_1, x_2, x_3$,且要求 CRC32 校验和保持不变。显然,修改这些字节会导致校验和变化,因此除了改变这四个字节之外,我们还选择另外四个字节 $a_j, a_{j+1}, a_{j+2}, a_{j+3}$,它们可以被赋予任意值。你的任务是找到这些字节的新值,使得整个序列的 CRC32 校验和保持不变,或者确定无法完成这一目标。因为对数据的修改是个严肃的操作,在正式进行修改之前,需要确定如何处理 $q$ 个独立测试用例。
输入格式
第一行包含两个整数 $n$ 和 $q$,分别表示文件中的字节数和需要处理的查询数量($8 \le n \le 2 \cdot 10^5$;$1 \le q \le 10^5$)。
第二行描述了文件的内容:$n$ 个整数 $a_0, a_1, \ldots, a_{n-1}$($0 \le a_i \le 255$),表示文件的字节内容。
接下来的 $q$ 行中,每行包含六个整数 $i, j, x_0, x_1, x_2, x_3$,表示从位置 $i$ 开始,用 $x_0, x_1, x_2, x_3$ 替换四个字节,同时,从位置 $j$ 开始的四个字节($0 \le i, j \le n-4$;$0 \le x_0, x_1, x_2, x_3 \le 255$)可以自由修改。保证区间 $[i; i+3]$ 和 $[j; j+3]$ 不重叠。
输出格式
对每个查询,输出四个整数 $z_0, z_1, z_2, z_3$,表示将编号为 $j, j+1, j+2, j+3$ 的四个字节替换为这些值,使得 CRC32 校验和保持不变。请注意,所有查询是相互独立的,不会影响序列的实际内容。
如果有多个可能的解,输出任意一个;如果没有有效解,则输出 `No solution`。
**本翻译由 AI 自动生成**