Cod sursa(job #1103882)

Utilizator FayedStratulat Alexandru Fayed Data 10 februarie 2014 07:32:10
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#define NMAX 15001

int AIB[NMAX];
int n,m;
int zero(int x){

    return(x^(x-1))&x;
}

void update(int ind,int x){

    while(ind <=n){

            AIB[ind]+=x;
            ind += zero(ind);
    }
}

int query(int ind){

    int S=0;
    while(ind){

        S+=AIB[ind];
        ind-=zero(ind);
    }
return S;
}

int main(){

    int x;
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(register int i=1;i<=n;++i){

        scanf("%d",&x);
        update(i,x);
    }

    int cod,a,b;
        while(m){

            scanf("%d%d%d",&cod,&a,&b);
            if(cod == 0)
            update(a,-b);
            else printf("%d\n",query(b)-query(a-1));
        --m;
        }
return 0;
}