返回题解分享
讨论 / 题解分享/ 帖子详情

一维差分 - 题解

using namespace std;
#define int long long 
#define endl '\n'

int n,m;
const int N = 1e5 + 10;
int a[N],d[N];
int sum[N];

void solve(){
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		cin >> a[i];
	}
	while(m--){
		int l,r,c;
		cin >> l >> r >> c;
		d[l] += c;d[r+1] -= c;
	}

	for(int i = 1;i <= n;i++){
		sum[i] = sum[i-1] + d[i];
	}
	for(int i = 1;i <= n;i++){
		a[i] += sum[i];
		cout << a[i] << " "; 
	}
}

signed main(){
	
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	solve();
	
	return 0;
}
0 回复 0 转发 0 喜欢 6 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!