【模板】二维差分
题号:NC226337
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一个 n\times m 的整数矩阵 b,矩阵的下标从 1 开始记作 b_{i,j}。现在需要支持 q 次操作,第 t 次操作给定五个整数 x_1,y_1,x_2,y_2,k,表示将以左上角 (x_1,y_1)、右下角 (x_2,y_2) 为边界的子矩阵内的每个元素都增加 k。全部操作执行完毕后,请输出最终矩阵。

\hspace{15pt}【名词解释】
\hspace{23pt}\bullet\,子矩阵:从矩阵中连续选取若干行与若干列得到的矩形区域。

输入描述:

\hspace{15pt}在一行上输入三个整数 n,m,q\left(1\leqq n,m\leqq1000;\ 1\leqq q\leqq10^5\right),依次表示矩阵行数、列数与操作次数。 
\hspace{15pt}此后 n 行,第 i 行输入 m 个整数 b_{i,1},b_{i,2},\dots,b_{i,m}\left(-10^9\leqq b_{i,j}\leqq10^9\right),描述矩阵初始元素。
\hspace{15pt}再之后 q 行,每行输入五个整数 x_1,y_1,x_2,y_2,k\left(1\leqq x_1\leqq x_2\leqq n;\ 1\leqq y_1\leqq y_2\leqq m;\ -10^9\leqq k\leqq10^9\right),描述一次矩阵加法操作。

输出描述:

\hspace{15pt}输出 n 行,每行 m 个整数,表示所有操作结束后矩阵的最终状态。同行相邻元素之间使用一个空格分隔。
示例1

输入

复制
2 3 4
1 2 3
4 5 6
1 1 2 2 3
1 2 2 3 -1
1 1 1 3 4
1 1 2 1 1

输出

复制
9 8 6
8 7 5

说明

\hspace{15pt}在该样例中: 
\hspace{23pt}\bullet\,第一次操作将 (1,1)-(2,2) 内的四个元素各自增加 3
\hspace{23pt}\bullet\,第二次操作将 (1,2)-(2,3) 内的六个元素各自减少 1
\hspace{23pt}\bullet\,第三次操作将 (1,1)-(1,3) 内的三个元素各自增加 4
\hspace{23pt}\bullet\,第四次操作将 (1,1)-(2,1) 内的两个元素各自增加 1
\hspace{15pt}最终得到的矩阵如输出所示。
示例2

输入

复制
3 3 1
0 0 0
0 0 0
0 0 0
1 1 3 3 5

输出

复制
5 5 5
5 5 5
5 5 5

说明

该样例中只进行一次操作,将整个矩阵所有元素都增加 5