【一维差分】

一维差分

#include
using namespace std;
const int N = 100000 + 11;

int n,m;
int a[N],b[N];

int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)   cin>>a[i];
    for(int i=1;i<=n;i++)   b[i] = a[i] - a[i-1];

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

你可能感兴趣的:(algorithm,算法)