Cod sursa(job #312337)

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