水题,我们直接按照差分的定义处理所有修改操作,最后前缀和一下加到原始数组上即可。
当然你也可以对原始数组差分一下,然后直接在原数组上用差分维护修改,最后前缀和完直接出答案。
#include<bits/stdc++.h> using i64 = long long; int main() { std::cin.tie(nullptr)->sync_with_stdio(false); int n, m; std::cin >> n >> m; std::vector<i64> a(n + 1), b = a; for (int i = 1; i <= n; i++) { std::cin >> a[i]; } while (m--) { int l, r, x; std::cin >> l >> r >> x; b[l] += x; b[r + 1] -= x; } std::partial_sum(b.begin(), b.end(), b.begin()); for (int i = 1; i <= n; i++) { std::cout << a[i] + b[i] << " "; } return 0; }