- 解析
https://www.acwing.com/solution/content/26588/
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N], b[N];
int main()
{
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
{
// 1. 输入数组, a[0] = 0
scanf("%d", &a[i]);
// 2. 构建差分数组
b[i] = a[i] - a[i - 1];
}
int l, r, c;
while (m --)
{
scanf("%d%d%d", &l, &r, &c);
// 3. 实现[l,r]之间的每个数都加c
b[l] += c;
b[r + 1] -=c;
}
for (int i = 1; i <=n; i++)
{
// 4. 输出a[i]。移项
a[i] = b[i] + a[i -1];
printf("%d", a[i]);
}
return 0 ;
}