1 solutions
-
0
C++ :
#include<bits/stdc++.h> using namespace std; const int N = 100010; int n,m; //a:原数组,b:差分数组 int a[N],b[N]; //在[l,r]之间插入c void insert(int l,int r,int c){ b[l] += c; b[r+1] -= c; } int main(){ cin>>n>>m; for(int i = 1;i <= n;i++){ cin>>a[i]; } //插入:相当于假定a数组是空的,元素是通过插入形成的 for(int i = 1;i <= n;i++){ insert(i,i,a[i]); } //做m次+c的操作 int l,r,c; for(int i = 1;i <= m;i++){ cin>>l>>r>>c; insert(l,r,c); } //求原数组,相当于求b数组的前缀和 for(int i = 1;i <= n;i++){ b[i] += b[i-1]; } //输出 for(int i = 1;i <= n;i++){ cout<<b[i]<<" "; } return 0; }
- 1
Information
- ID
- 10004
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By