Cod sursa(job #1735235)

Utilizator mIllIbytemIllI byte mIllIbyte Data 29 iulie 2016 12:30:07
Problema Datorii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.48 kb
#include<stdio.h>
#include<math.h>
int n,r,i,t,v,c,a[15001],m,b[123],s;
main(){freopen("datorii.in","r",stdin);freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
r=sqrt(n);
for(i=1;i<=n;i++)scanf("%d",a+i),b[i/r]+=a[i];
for(;m--;){
 scanf("%d %d %d",&c,&t,&v);
 if(c){
  s=0;
  if(v/r-t/r<=1){ for(;t<=v;t++)s+=a[t];}
  else{
   for(i=t/r+1;i<=v/r-1;i++)s+=b[i];
   for(i=t;i<(t/r+1)*r;i++)s+=a[i];
   for(i=v/r*r;i<=v;i++)s+=a[i];}
  printf("%d\n",s);
 }
 else {a[t]-=v,b[t/r]-=v;}
}
}