(挣牛币用的)
先开差分数组,再这样那样,最后求出差分数组的前缀和就好了
#include <bits/stdc++.h> using namespace std; #define int long long signed main() { int n, m; cin >> n >> m; vector<int> arr(n + 1); for(int i = 1; i <= n; ++i) cin >> arr[i]; vector<int> v(n + 2); for(int i = 1; i <= n; ++i) v[i] = arr[i] - arr[i - 1]; while(m--) { int l, r, k; cin >> l >> r >> k; v[l] += k; v[r + 1] -= k; } partial_sum(v.begin(), v.end(), v.begin()); for(int i = 1; i <= n; ++i) cout << v[i] << ' '; } // 64 位输出请用 printf("%lld")