差分

输入一个长度为 n 的整数序列。

接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。

请你输出进行完所有操作后的序列。

#include <iostream>
using namespace std;
const int N = 100010; 
int n, m;
int a[N], b[N];

int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        b[i] = a[i] - a[i - 1];
    }
    
    while (m--) {
        int l, r, v;
        cin >> l >> r >> v;
        b[l] += v;
        b[r + 1] -= v; 
    }
    
    for (int i = 1; i <= n; i++) {
        a[i] = b[i] + a[i - 1];
        cout << a[i] << " ";
    }
    return 0;
}

  

posted @ 2022-11-30 21:11  !&&||  阅读(62)  评论(0)    收藏  举报