差法算法(差分与前缀和的下标都从1开始,避免出现越界)
算法思路:给l,r区间内加上x,则表示为在l的位置+x,在r+1的位置上-x,就可抵消掉+x在r+1开始后的贡献,再利用前缀和就能一次求出答案
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
namespace IO{
inline LL read(){
LL o=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){o=o*10+c-'0';c=getchar();}
return o*f;
}
}using namespace IO;
const int N=1e5+7,base=1e9;
int sum[N];
int main(){
int n,m;
n=read(),m=read();
for(int x,i=1;i<=n;i++){
x=read();
sum[i]+=x;
sum[i+1]-=x;
}
int l,r,c;
while(m--){
l=read(),r=read(),c=read();
sum[l]+=c,sum[r+1]-=c;
}
for(int i=1;i<=n;i++){
sum[i]+=sum[i-1];
printf("%d ",sum[i]);
}
return 0;
}