差分
输入一个长度为 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;
}