Cod sursa(job #209020)

Utilizator katakunaCazacu Alexandru katakuna Data 20 septembrie 2008 10:41:05
Problema Datorii Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>

int x,n,m,i,v[20000],t,a,b;

int mod(int poz,int val){
int z=0;

  while(poz<=n){
  v[poz]-=val;

    while( ! ((poz>>z)&1) )z++;
    poz+=(1<<z);

  }

}


int add(int poz,int val){
int z=0;

  while(poz<=n){
  v[poz]+=val;

    while( ! ((poz>>z)&1) )z++;
    poz+=(1<<z);

  }

}



int intr(int poz){
int S=0,z=0;

   while(poz>0){
   S+=v[poz];

    while( ! ((poz>>z)&1) )z++;
    poz-=(1<<z);


   }

return S;
}




int main(){


FILE *f=fopen("datorii.in","r");
FILE *g=fopen("datorii.out","w");
fscanf(f,"%d %d",&n,&m);

  for(i=1;i<=n;i++){
  fscanf(f,"%d",&x);
  add(i,x);
  }

    for(i=1;i<=m;i++){
    fscanf(f,"%d %d %d",&t,&a,&b);

      if(t==0){
      mod(a,b);
      }

      else
      fprintf(g,"%d\n", (intr(b)-intr(a-1)) );
    
    }



fclose(f);
fclose(g);

return 0;
}