Cod sursa(job #297142)

Utilizator QSilverGeorge Popa QSilver Data 5 aprilie 2009 11:35:11
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>   
#define N 15100   
FILE *f,*g;   
int n,m ;   
int a[N];   
  
void update(int poz,int val){   
  
    for(; poz<=n ; poz += (poz&(poz-1))^poz )   
        a[poz]+=val;   
}   
  
long suma(int poz){   
    long sum=0;   
  
    for(; poz ; poz -= (poz&(poz-1))^poz )   
        sum+=a[poz];   
  
    return sum;   
}   
  
int main(){   
  
    f = fopen("datorii.in","r");   
    g = fopen("datorii.out","w");   
  
    fscanf(f,"%d%d",&n,&m);   
    int i,x,o,y;   
  
    for(i=1;i<=n;i++){   
        fscanf(f,"%d",&x);   
        update(i,x);   
    }   
  
    for( ; m-- ; ){   
  
        fscanf(f,"%d%d%d",&o,&x,&y);   
        if(!o) update(x,-y);   
        else fprintf(g,"%ld\n",suma(y) - suma(x-1));   
  
    }   
  
    return 0;   
}