差分一维
#include<bits/stdc++.h>
using namespace std;
const int N=100000+10;
int b[N],a[N],s[N];
void inster(int l,int r,int c)//插入操作
{
b[l]=b[l]+c;
b[r+1]=b[r+1]-c;
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)//输入原数组
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)//更新差分数组
inster(i,i,a[i]);
while(m--)
{
int l,r,c;
cin>>l>>r>>c;
inster(l,r,c);//更新差分数组
}
for(int i=1;i<=n;i++)
s[i]=s[i-1]+b[i];//差分数组的前缀和=原数组
for(int i=1;i<=n;i++)
printf("%d ",s[i]);//更新后的原数组
}