#1237. 矩阵区域加法

矩阵区域加法

题目描述

输入一个 nn 行 mm 列的整数矩阵,再输入 qq 个操作,每个操作包含五个整数 x1,y1,x2,y2,cx_1, y_1, x_2, y_2, c,其中 (x1,y1)(x_1,y_1) 和 (x2,y2)(x_2,y_2) 表示一个子矩阵的左上角坐标和右下角坐标。

每个操作都要将选中的子矩阵中的每个元素的值加上 cc。

请你将进行完所有操作后的矩阵输出。

输入格式

第一行包含整数 n,m,qn, m, q。

接下来 nn 行,每行包含 mm 个整数,表示整数矩阵。

接下来 qq 行,每行包含 5 个整数 x1,y1,x2,y2,cx_1, y_1, x_2, y_2, c,表示一个操作。

输出格式

共 nn 行,每行 mm 个整数,表示所有操作进行完毕后的最终矩阵。

数据范围

1≤n,m≤10001 \le n, m \le 1000,1≤q≤1051 \le q \le 10^5,1≤x1≤x2≤n1 \le x_1 \le x_2 \le n,1≤y1≤y2≤m1 \le y_1 \le y_2 \le m,−1000≤c≤1000-1000 \le c \le 1000,−1000≤-1000 \le 矩阵内元素的值 ≤1000\le 1000。

样例

输入样例 1

3 4 3
1 2 2 1
1 2 2 1
1 2 2 1
1 1 1 1 1
1 1 2 2 1
1 3 2 3 2

输出样例 1

3 3 4 1
2 3 4 1
1 2 2 1

提示

做法:二维差分。子矩阵 [x1..x2]×[y1..y2][x_1..x_2]\times[y_1..y_2] 加 cc 只需在差分数组的四个角上做加减,最后做一次二维前缀和还原,总复杂度 O(nm+q)O(nm+q)。