Cod sursa(job #1684485)

Utilizator SirStevensIonut Morosan SirStevens Data 11 aprilie 2016 08:42:15
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("datorii.in");
ofstream out("datorii.out");

#define Nmax 400000

int v[Nmax],n,m,pos,a,b,s,start,finish,x,val;

void Update(int nod, int l, int r){

    if(l == r ){
        v[nod]+=val;

    }
    else{
    int mij=(l + r)/2;
    if(pos <= mij) Update(2*nod,l,mij);
    else Update(2*nod + 1,mij+1,r);

    v[ nod ] = v[ 2 * nod ] + v[ 2 * nod + 1 ];
    }
}

void Querry(int nod, int l, int r){

    if(a <= l && b >= r){
        s+=v[nod];
    }
    else{
    int mij=(l + r)/2;
    if(a <= mij) Querry(2*nod,l,mij);
    if(b > mij) Querry(2*nod +1,mij+1,r);

    }

}

int main(){
    in>>n>>m;
    for(int i=1;i<=n;i++){
        in>>val;
        pos=i;
        Update(1,1,n);

}

for(int i=1;i<=m;i++){

    in>>x>>a>>b;

    if(x == 1){
        s=0;
        Querry(1,1,n);
        out<<s<<'\n';

    }
    else{

        pos=a;
        val=-b;
        Update(1,1,n);

    }
}

return 0;

}