#include<iostream>
using namespace std;
const int N = 1010;
int n = 0, m = 0, q = 0;
int a[N][N], b[N][N];
void insert(int x1, int x2, int y1,int y2,int c)
{
b[x1][y1] += c;
b[x1+1][y2] -= c;
b[x2][y2+1] -= c;
b[x2 + 1][y2 + 1] += c;
}
int main()
{
cin >> n >> m >> q;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
insert(i, j, i, j, a[i][j]);
}
}
while (q--)
{
int x1, y1, x2, y2,c;
cin >> x1 >> y1 >> x2 >> y2 >> c;
insert(x1, y1, x2, y2, c);
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
a[i][j] = a[i - 1][j] - a[i][j - 1] - a[i - 1][j - 1] + b[i][j];
// b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];
cout << a[i] << " ";
}
}
return 0;
}
二位差分应用
最新推荐文章于 2024-10-11 05:06:51 发布