/* 差分序列 b[i]=a[i]-a[i-1] 支持多次区间+ / - 最后输出原序列 区间+ 只需要修改 b[l] b[r+1] */ #include<iostream> #include<cstdio> #define maxn 200010 using namespace std; int n,a[maxn],b[maxn],m; int init() { int x=0; int f=0; char s; s=getchar(); while(s<‘0‘||s>‘9‘) { if(s==‘-‘)f=1; s=getchar(); } while(s>=‘0‘&&s<=‘9‘) { x=x*10+s-‘0‘; s=getchar(); } if(f==0)return x; else return -x; } int main() { n=init(); for(int i=1;i<=n;i++) { a[i]=init(); b[i]=a[i]-a[i-1]; } int l,r,x; m=init(); for(int i=1;i<=m;i++) { l=init(); r=init(); x=init(); b[l]=b[l]+x; b[r+1]=b[r+1]-x; } int p=0; for(int i=1;i<=n;i++) { printf("%d ",p+b[i]); p=p+b[i]; } return 0; }
时间: 2024-10-08 11:00:14