我讨厌「命运」这个词
出生 相遇 离别
成功和失败 人生的幸运和不幸
如果这些都是由命运事先决定好了的话
那我们又是为何而生的呢
在富裕家庭里出生的人
由漂亮妈妈生下来的人
正逢饥荒和战争时期出生的人
如果这一切都是命运
那神明可就太不讲道理 太残酷了
从那时开始 我们就没有未来
因为我们深知 自己必将一事无成
《回转企鹅罐》给你一个 $n\times m$ 的矩阵从上往下行数递增,从左到右列数递增,对它进行 $q$ 次操作:
- 给 $x_1, y_1, x_2, y_2, v$,将 $x_1\le x\le x_2, y_1\le y\le y_2$ 部分的数都加上 $v$。
- 给出 $x_1, y_1, l, t$,将 $x_1 \le x \le x_1 + l, y_1\le y\le y_1 + l$ 位置的正方形内部的数逆时针旋转 $t\times 90^\circ$。
有个数据点里有 $opt=0$ 的情况,请当做 $opt=2$ 处理
请你输出操作结束后的矩阵。
矩阵内的数均对 $2^{32}$ 取模,这意味着你可以使用 unsigned int 进行计算。
输入格式
第一行输入四个数 $n, m, q, \mathrm{lim}$
接下来 $q$ 行输入每行第一个数 $opt$ 表示操作类型,然后对应该操作类型输入对应的参数。
输出格式
为了降低输出量,输出 $\mathrm{lim}$ 个数。
假设将矩阵的数第 $i$ 行第 $j$ 列为 a[i][j],令
output[((i - 1) * m + j - 1) % lim] ^= a[i][j] + ((i - 1) * m + j - 1) / lim
输出数组 output[0], output[1], ... output[lim - 1] 即可。
样例数据
样例 1 输入
4 4 2 16 1 2 2 4 4 1 2 3 1 1 1
样例 1 输出
0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1
样例 1 解释
第一次操作:
0 0 0 0
0 1 1 1
0 1 1 1
0 1 1 1
第二次操作:
0 0 0 0
0 1 1 1
1 1 1 1
0 0 1 1
数据范围
空间限制:$512\texttt{MB}$
时间限制:$2\texttt{s}$
对于 $100\%$ 的数据,保证 $1\le n, m, q\le 2,000, \mathrm{lim} = \min(nm, 10^5)$。
| 测试点 | $n,m$ | 特殊性质 |
|---|---|---|
| $1,2$ | $\le100$ | |
| $3,4,5,6$ | $\le600$ | |
| $7,8$ | 没有操作 2 | |
| $9$ | 所有操作 1 在操作 2 之前 | |
| $10$ |
空的地方表示没有额外限制。
提示
这是一道低级数据结构题。