差分

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

#include<iostream>
using namespace std;
int num[100010] , hou[100010];

void insert( int l , int r , int c){
    hou[l] += c;
    hou[r + 1] -= c;
}

int main(){
    
    int n , m;
    cin >> n >> m;
    
    for(int i = 1 ; i <= n ; i ++) cin >> num[i];
    
    for(int i = 1 ; i <= n ; i ++)
        insert(i , i , num[i]);
    
    for(int i = 1 ; i <= m ; i ++){
        int l , r , c;
        cin >> l >> r >> c;
        insert(l , r ,c);
    }
    
    for(int i = 1 ; i <= n ; i ++) hou[i] += hou[i - 1];
    
    for(int i = 1 ; i <= n ; i ++) cout << hou[i] << " ";
    return 0;
}

posted @ 2024-10-22 19:11  _l_x_y  阅读(2)  评论(0编辑  收藏  举报