Cod sursa(job #1778633)

Utilizator andra1782Andra Alazaroaie andra1782 Data 13 octombrie 2016 22:37:17
Problema Datorii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
int aib[15001],n;

void update(int p, int val){
    while(p<=n){
        aib[p]+=val;
        p+=p&(-p);
    }
}

int query(int p){
    int s=0;

    while(p!=0){
        s+=aib[p];
        p-=p&(-p);
    }
    return s;
}

int main(){
    FILE *fin=fopen("datorii.in","r");
    FILE *fout=fopen("datorii.out","w");
    int m,i,e,t,a,b;

    fscanf(fin,"%d%d",&n,&m);
    for(i=1; i<=n; i++){
        fscanf(fin,"%d",&e);
        update(i,e);
    }
    for(i=1; i<=m; i++){
        fscanf(fin,"%d%d%d",&t,&a,&b);
        if(t==0)
            update(a,-b);
        else
            fprintf(fout,"%d\n",query(b)-query(a-1));
    }
    fclose(fin);
    fclose(fout);
    return 0;
}