1 条题解

  • 0
    @ 2024-4-9 18:53:02
    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1010;
    int mp[N][N];
    int b[N][N];
    int res[N][N];
    int n,m,q;
    void compute (int x1,int y1,int x2,int y2,int c) {
        b[x1][y1] += c;
        b[x2 + 1][y1] -= c;
        b[x1][y2 + 1] -= c;
        b[x2 + 1][y2 + 1] += c;
    }
    int main(){
        scanf("%d %d %d",&n,&m,&q);
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= m; ++j) {
                scanf("%d",&mp[i][j]);
                compute(i,j,i,j,mp[i][j]);
            }
        }
        while (q--) {
            int x1,y1,x2,y2,c;
            scanf("%d %d %d %d %d",&x1,&y1,&x2,&y2,&c);
            compute(x1,y1,x2,y2,c);
        }
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= m; ++j) {
                res[i][j] = res[i - 1][j] + res[i][j - 1] - res[i - 1][j - 1] + b[i][j];
            }
        }
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= m; ++j) {
                printf("%d ",res[i][j]);
            }
            printf("\n");
        }
        return 0;
    }
    

    信息

    ID
    90
    时间
    2000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    89
    已通过
    36
    上传者