区间更新#蓝桥杯

3291、区间更新

#include
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
/*
对差分数组做前缀和,可以得到原数组
for(int i=1;i<=n;i++)
	diff[i]=a[i]-a[i-1];
将区间都加上x:
	diff[l]+=x;
	diff[r+1]-=x;
*/
const int N = 1e5+5;
int a[N],diff[N];
int main() {
	IOS;
	int n,m;
	while(cin>>n>>m){
		for(int i=1;i<=n;i++){
			cin>>a[i];
			diff[i]=a[i]-a[i-1];
		}
		while(m--){
			int x,y,z;cin>>x>>y>>z;
			diff[x]+=z;
			diff[y+1]-=z;
		}
		for(int i=1;i<=n;i++)a[i]=a[i-1]+diff[i];
		for(int i=1;i<=n;i++)cout<<a[i]<<" ";
		cout<<"\n";
	}
	return 0;
}

你可能感兴趣的:(C/C++备战蓝桥杯,蓝桥杯,算法,c++,数据结构)