Cod sursa(job #2400252)

Utilizator Leonard123Mirt Leonard Leonard123 Data 8 aprilie 2019 16:02:28
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
#define maxn 15050
int a[4*maxn],N,M,op,poz,val,start,stop,maxim;

void update(int nod, int st, int dr){
    if(st==dr){
        a[nod]+=val;
        return;
    }
    int mij=(st+dr)/2;
    if(poz<=mij)
        update(2*nod,st,mij);
    else update(2*nod+1,mij+1,dr);
    a[nod]=a[nod*2]+a[nod*2+1];
}
void query(int nod, int st, int dr){
    if(start<=st && dr<=stop){
        maxim+=a[nod];
        return;
    }
    int mij=(st+dr)/2;
    if(start<=mij) query(2*nod,st,mij);
    if(mij<stop)   query(2*nod+1,mij+1,dr);
}

int main(){
    cin>>N>>M;
    for(poz=1; poz<=N; poz++){
        cin>>val;
        update(1,1,N);
    }
    while(M){
        cin>>op;
        if(op==0){
            cin>>poz>>val;
            val*=-1;
            update(1,1,N);
        }
        else{
            cin>>start>>stop;
            maxim=0;
            query(1,1,N);
            cout<<maxim<<'\n';
        }
        M--;
    }
    return 0;
}///6 4 2 1 3 2 0 0 1 0 0 2