题目描述
参考代码
/*
给定a1, a2, a3, ..., an
构造差分数组b[N],使得
ai = b1 + b2 + ... + b[i]
核心操作:将a[L~R]全部加上C,等价于b[L] += C, b[R+1] -= C
*/
#include <iostream>
using namespace std;
const int N = 100010;
int n, m;
int a[N], b[N];
void insert(int l, int r, int c)
{
b[l] += c;
b[r + 1] -= c;
}
int main()
{
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++) a[i] = a[i - 1] + b[i];
for (int i = 1; i <= n; i++) printf("%d ", a[i]);
}