#include <iostream>
using namespace std;

const int N = 1010;
int a[N][N], b[N][N];

int main()
{
    int n, m, q;
    cin >> n >> m >> q;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j) {
            cin >> a[i][j];
            // 同时也可以求二维差分矩阵b,求法就是求二维前缀和矩阵那个公式移个项
            b[i][j] = a[i][j] - a[i][j - 1] - a[i - 1][j] + a[i - 1][j - 1];
        }

    // 操作
    while(q--) {
        int x1, y1, x2, y2, c;
        cin >> x1 >> y1 >> x2 >> y2 >> c;

        // 这里对差分数组的模拟操作,看不懂可以刷一边y总讲解        
        b[x1][y1] += c, b[x1][y2 + 1] -= c, b[x2 + 1][y1] -= c, b[x2 + 1][y2 + 1] += c;
    }

    // 对二维差分数组b求二维前缀和矩阵a,就得到了处理后的二维数组a
    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];

    for(int i = 1; i <= n; ++i) {
        for(int j = 1; j <= m; ++j)
            cout << a[i][j] << ' ';
        cout << endl;
    }
    return 0;
}

 

posted on 2025-05-01 22:21  fafrkvit  阅读(16)  评论(0)    收藏  举报