#642. 农田施肥计划

农田施肥计划

农田施肥计划

故事背景

一位农场主把一大片农田划分成 n×mn \times m 个小格,每个格子上种着作物。为了提高整体产量,他计划在不同的时间对不同的矩形区域统一撒施肥料。

每次施肥操作,他都会选择一个矩形区域 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2),并在其中的每一块小田地上均匀撒上 vv 千克肥料(vv 也可能为负数,表示等量移除肥料)。所有操作结束后,农场主想知道每一块小田地最终一共被撒上(或移除)了多少千克肥料。

请你帮他计算出最终每块小田地的净施肥量。

题目描述

给定一个 n×mn \times m 的整数矩阵 aa,其中 ai,ja_{i,j} 表示初始时第 ii 行第 jj 列小田地上的肥料千克数(可能为 00 或负数)。接下来有 qq 次施肥操作,每次操作给出五个整数 x1,y1,x2,y2,vx_1,y_1,x_2,y_2,v,表示对所有满足

x1ix2,y1jy2x_1 \le i \le x_2,\quad y_1 \le j \le y_2

的格子 (i,j)(i,j),将 ai,ja_{i,j} 同时加上 vv

所有操作依次作用在同一个矩阵上。请你输出最终得到的矩阵。

输入格式

  • 第一行包含三个整数 n,m,qn,m,q,分别表示矩阵的行数、列数和施肥操作次数。
  • 接下来 nn 行,每行包含 mm 个整数,表示初始矩阵 aa
  • 接下来 qq 行,每行包含五个整数 x1,y1,x2,y2,vx_1,y_1,x_2,y_2,v,表示一次矩形区域施肥操作。

保证 1x1x2n1 \le x_1 \le x_2 \le n1y1y2m1 \le y_1 \le y_2 \le m

输出格式

输出 nn 行,每行包含 mm 个整数,表示所有操作执行完毕后,每一块小田地上的最终肥料千克数。

输入输出样例 #1

输入 #1

3 4 2
0 0 0 0
0 0 0 0
0 0 0 0
2 2 3 4 5
1 1 2 2 3

输出 #1

3 3 0 0
3 8 5 5
0 5 5 5

样例解释 #1

初始时所有格子为 00

  • 第一次操作,将矩形 (2,2)(2,2)(3,4)(3,4) 每个格子加 55,对应区域变为 55
  • 第二次操作,将矩形 (1,1)(1,1)(2,2)(2,2) 每个格子加 33

最终得到的矩阵为示例输出所示。

数据范围

对所有数据,保证:

  • 1n,m5001 \le n,m \le 500
  • 1q2×1051 \le q \le 2 \times 10^5
  • 109ai,j109-10^9 \le a_{i,j} \le 10^9
  • 109v109-10^9 \le v \le 10^9
  • 所有中间结果与最终答案均在 6464 位有符号整数范围内。

要求程序在合理时间内完成所有操作并输出结果。