一维
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N], d[N];
void insert(int l, int r, int c){
d[l] += c;
d[r + 1] -= c;
return ;
}
int main(){
int n, m;
cin >> n >> m;
for(int i = 1; i <= n; ++ i)
cin >> a[i];
for(int i = 1; i <= n; ++ i)
insert(i, i, a[i]);
while(m --){
int l, r, c;
cin >> l >> r >> c;
insert(l, r, c);
}
for(int i = 1; i <= n; ++ i)
d[i] += d[i - 1];
for(int i = 1; i <= n; ++ i)
cout << d[i] << ' ';
return 0;
}
二维
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, m, q;
int a[N][N], d[N][N];
void insert(int x1, int y1, int x2, int y2, int c){
d[x1][y1] += c;
d[x2 + 1][y1] -= c;
d[x1][y2 + 1] -= c;
d[x2 + 1][y2 + 1] += c;
return ;
}
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, x2, y1, 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)
d[i][j] += d[i - 1][j] + d[i][j - 1] - d[i - 1][j - 1];
for(int i = 1; i <= n; ++ i){
for(int j = 1; j <= m; ++ j) cout << d[i][j] << ' ';
puts("");
}
return 0;
}