#644. 城市绿化评分提升

城市绿化评分提升

城市绿化评分提升

故事背景

某城市被划分成 n×mn \times m 个网格区域,每个格子都有一个“绿化评分”ai,ja_{i,j},用来衡量该区域的绿化水平。为了迎接环保检查,市政部门计划对若干块矩形区域进行集中整治,每次整治都会让一个矩形区域内所有格子的绿化评分同时提升(或下降)同样的数值。

在所有集中整治完成后,环保部门会给出一个目标评分下限 TT,想知道最终有多少个格子的绿化评分不低于 TT,从而评估整体达标情况。

请你帮助统计这个数量。

题目描述

给定一个 n×mn \times m 的整数矩阵 aa,表示初始时每个格子的绿化评分。接下来有 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} 同时增加 vvvv 可以为负数)。

所有操作执行完毕后,给定一个整数 TT,请你统计最终矩阵中有多少个格子满足 ai,jTa_{i,j} \ge T

输入格式

  • 第一行包含四个整数 n,m,q,Tn,m,q,T,分别表示行数、列数、操作次数和目标评分下限。
  • 接下来 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

输出格式

输出一行,一个整数,表示所有操作执行完毕后,满足 ai,jTa_{i,j} \ge T 的格子数量。

输入输出样例 #1

输入 #1

3 3 2 10
1 10 2
9 11 12
10 3 4
1 1 3 3 0
2 2 3 3 -1

输出 #1

3

样例解释 #1

初始矩阵中大于等于 1010 的格子有 44 个,分别是 10,11,12,1010,11,12,10

第一次操作将全图每个格子加 00,无变化;第二次操作将右下 2×22 \times 2 矩形内每个格子减 11,于是 1111 变为 10101212 变为 1111,右下角的 44 变为 33

最终大于等于 1010 的格子为 {10,10,11}\{10,10,11\}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
  • 109v,T109-10^9 \le v,T \le 10^9
  • 所有中间结果与最终答案在 6464 位有符号整数范围内。

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