Cod sursa(job #312347)

Utilizator tibiletsKoos Tiberiu Iosif tibilets Data 5 mai 2009 19:20:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
int A[30002],s,N,M,p,b;
void act(int a, int b)
{p=0;
 while(a<=N)
 {A[a]+=b;
  while(!(a&(1<<p)))
   ++p;
  a+=1<<p;
  ++p;}
}
int in(int a)
{p=0;b=0;
 while(a>0)
 {b+=A[a];
  while(!(a&(1<<p)))
   ++p;
  a-=1<<p;
  ++p;}
 return b;}
int main()
{FILE *f=fopen("datorii.in","r"),*g=fopen("datorii.out","w");
int x,p,q;
fscanf(f,"%d%d",&N,&M);
for(x=1;x<=N;++x)
{fscanf(f,"%d",&q);
 act(x,q);}
for(;M;--M)
{fscanf(f,"%d%d%d",&x,&p,&q);
 if(x){s=in(q)-in(p-1);
	   fprintf(g,"%d\n",s);}
 else act(p,-q);}
fclose(f);
fclose(g);
return 0;
}