#P1042. 数组操作

    ID: 54 传统题 1000ms 256MiB 尝试: 0 已通过: 0难度: 普及 ← 上一题 下一题 → 随机一题 上传者: 标签 模拟 枚举 前缀和 差分 二维数组
显示设置

数组操作

题目描述

小P有一个 nn 行 mm 列的二维序列 aa。现在他给你一些操作,你需要按顺序完成全部操作,并输出最终的二维序列。

操作共有四种:

  • 1 k r l:
  • 若 l=1,表示将第 kk 行的所有数增加 rr;
  • 若 l=2,表示将第 kk 列的所有数增加 rr。
  • 2 k:表示将所有数增加 kk。
  • 3 k l:
  • 若 l=1,表示将第 kk 行的所有数翻转(倒序);
  • 若 l=2,表示将第 kk 列的所有数翻转(上下颠倒)。
  • 4 k r l:
  • 若 l=1,表示将第 kk 行的所有数相加,把结果存入第 kk 行第 rr 个数(该位置原来的数被替换掉,同行其他数不变);
  • 若 l=2,表示将第 kk 列的所有数相加,把结果存入第 rr 行第 kk 个数。

输入格式

输入共 n+q+1n+q+1 行。

第一行三个用空格隔开的整数,依次为 n,m,qn, m, q。

接下来 nn 行,每行 mm 个用空格隔开的整数,表示初始的二维序列 aa(第 ii 行第 jj 个数即 ai,ja_{i,j})。

接下来 qq 行,每行描述一次操作,格式如题目描述所示。

输出格式

输出共 nn 行,每行 mm 个用空格隔开的整数,表示最终二维序列的第 ii 行。

输入输出样例 #1

输入 #1

3 6 6
2 2 1 7 2 6
2 2 1 7 4 4
2 2 1 7 0 6
1 2 3 1
1 3 3 2
2 1
3 2 1
3 3 2
4 1 1 1

输出 #1

29 3 5 8 3 7
8 8 11 8 6 6
3 3 5 8 1 7

说明

样例解释

初始的二维序列为:

第1列 第2列 第3列 第4列 第5列 第6列
第1行 2 1 7 2 6
第2行 4
第3行 0 6
  • 第 11 次(1 2 3 1):第 22 行所有数 +3+3,第 22 行变成 [5,5,4,10,7,7][5, 5, 4, 10, 7, 7]。
  • 第 22 次(1 3 3 2):第 33 列所有数 +3+3,第 33 列由 [1,4,1][1, 4, 1] 变成 [4,7,4][4, 7, 4]。
  • 第 33 次(2 1):所有数 +1+1,此时序列为
$$\begin{matrix} 3 & 3 & 5 & 8 & 3 & 7 \\ 6 & 6 & 8 & 11 & 8 & 8 \\ 3 & 3 & 5 & 8 & 1 & 7 \end{matrix}$$
  • 第 44 次(3 2 1):翻转第 22 行,得到 [8,8,11,8,6,6][8, 8, 11, 8, 6, 6]。
  • 第 55 次(3 3 2):翻转第 33 列,该列三个数都是 55,翻转后不变。
  • 第 66 次(4 1 1 1):第 11 行之和为 3+3+5+8+3+7=293+3+5+8+3+7=29,把 2929 存入第 11 行第 11 个数。

最终序列即样例输出。

数据范围

  • 对于 20%20\% 的数据,1≤n,m,q≤101 \le n, m, q \le 10。
  • 对于 50%50\% 的数据,1≤n,m,q≤1001 \le n, m, q \le 100。
  • 对于 100%100\% 的数据,1≤n,m,q≤10001 \le n, m, q \le 1000,∣ai,j∣≤1011|a_{i,j}| \le 10^{11},操作中的增量满足 ∣r∣,∣k∣≤1011|r|, |k| \le 10^{11},1≤l≤21 \le l \le 2,下标 k,rk, r 均合法。数据保证操作过程中所有数的绝对值始终不超过 9×10189 \times 10^{18}。