AcWing 797. 差分
原题链接
简单
作者:
xxdxs
,
2021-04-21 19:44:34
,
所有人可见
,
阅读 301
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
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 ++ )
scanf("%d",&a[i]);
for (int i = 1 ;i <= n; i ++ )
insert( i, i, a[i]);
/*假设a数组为空,现在使用insert函数在i到i之间依次插入a[i],
就是“以b数组为差分数组构建了a数组”同时也将b数组构建成功了
因为insert函数只会对b数组值进行操作 ,
所以一开始假设a数组为0不影响实际值不为0
*/
int l, r, c;
while ( m -- )
{
scanf("%d%d%d",&l,&r,&c);
insert(l , r , c);
}
for ( int i = 1 ; i <= n ; i ++ )
b[i] = b[i] + b[i - 1];
for (int i = 1 ; i <= n ; i ++ )
printf("%d ", b[i]);
return 0;
}