水题,我们直接按照差分的定义处理所有修改操作,最后前缀和一下加到原始数组上即可。

当然你也可以对原始数组差分一下,然后直接在原数组上用差分维护修改,最后前缀和完直接出答案。

#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;
}

https://www.nowcoder.com/discuss/727521113110073344