Cod sursa(job #1183064)

Utilizator usermeBogdan Cretu userme Data 8 mai 2014 14:42:40
Problema Datorii Scor 100
Compilator cpp Status done
Runda aib-uri Marime 0.91 kb
#include <cstdio>
 
FILE*f=fopen("datorii.in","r");
FILE*h=fopen("datorii.out","w");
 
int t[100001];
 
int n,m;
 
int query(int i){
    int s=0;
    while ( i!=0 ){
        s+=t[i];
        i-= ( i&-i );
    }
    return s;
}
 
void update(int i, int val){
    while ( i<=n ){
        t[i]+=val;
        i+= ( i&-i );
    }
}
 
void update2(int i, int val){
    while ( i<=n ){
        t[i]-=val;
        i+= ( i&-i );
    }
}
 
int main()
{
    fscanf(f,"%d%d",&n,&m);
    for ( int i=1;i<=n;++i ){
        int x;
        fscanf(f,"%d",&x);
        update(i,x);
    }
    for ( int i=1;i<=m;++i ){
        int fl,x,y;
        fscanf(f,"%d",&fl);
        if ( fl==0 ){
            fscanf(f,"%d%d",&x,&y);
            update2(x,y);
        }
        if ( fl==1 ){
            fscanf(f,"%d%d",&x,&y);
            fprintf(h,"%d\n",query(y)-query(x-1));
        }
    }
    return 0;
}