算法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数组的处理函数
b[l]+=c;//得到b[l]+c,b[l+1]+c,b[l+2]+c+....+b[n]+c
b[r+1]-=c;//得到b[r+1]-c,b[r+2]-c,,,,b[n]-c
}
int main(){
scanf("%d%d",&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]);//这里相当于把原数组的每个数插入到b数组
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];//b数组的前缀和,这里是b[l]+c与b[r+1]-c前缀和
for(int i=1;i<=n;i++) printf("%d ",b[i]);
return 0;
}