题解 | 【模板】差分
【模板】差分
https://www.nowcoder.com/practice/4bbc401a5df140309edd6f14debdba42
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<long long> a(n + 2, 0), d(n + 2, 0);
// 读入原数组
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
// 构建差分数组
for (int i = 1; i <= n; i++) {
d[i] = a[i] - a[i - 1];
}
// 区间加操作
while (m--) {
int l, r, k;
cin >> l >> r >> k;
d[l] += k;
d[r + 1] -= k;
}
// 还原并输出
for (int i = 1; i <= n; i++) {
a[i] = a[i - 1] + d[i];
cout << a[i] << ' ';
}
return 0;
}
