AcWing 797. 差分
原题链接
简单
作者:
现代修士o_O
,
2021-04-21 09:04:19
,
所有人可见
,
阅读 195
#include <iostream>
using namespace std;
const int N = 100010;
int n, m;
int a[N],b[N]; //a为原数组,b为差分数组,用于快速修改某段区间的值
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 ++ ) scanf("%d", &a[i]), insert(i, i, a[i]); // 读入原数组,并初始化差分数组。
while (m -- )
{
int l, r, c;
scanf("%d%d%d", &l, &r, &c);
insert(l, r, c); // 通过修改差分数组,间接修改原数组。
}
for (int i = 1; i <= n; i ++ ) b[i] += b[i - 1], printf("%d ", b[i]); //差分数组变成原数组,并输出。(这题原数组的读入都可以省去)
return 0;
}