1 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=100010; int a[N],b[N]; //b[i]表示原来数组的差分数组 /* 差分数组 b[1]=a[1]; b[2]=a[2]-a[1]; ..... b[i]=a[i]-a[i-1] 对原始数组进行a[l]...a[r]这个区域+c,等价于b[l]+=c,b[r+1]-=c 前缀和数组 a[i]=b[1]+b[2]....b[i] */ int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) //计算差分数组 { scanf("%d",&a[i]); b[i]=a[i]-a[i-1]; } while(m--) //区域进行增减 { int l,r,c; scanf("%d%d%d",&l,&r,&c); b[l]+=c; b[r+1]-=c; } for(int i=1;i<=n;i++) //计算进行 { a[i]=a[i-1]+b[i]; } for(int i=1;i<=n;i++) { printf("%d ",a[i]); } return 0; }
- 1
Information
- ID
- 197
- Time
- 500ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 43
- Accepted
- 17
- Uploaded By