Cod sursa(job #2327501)

Utilizator MAXIMILLIANMUSOHYEAHYEAH MAXIMILLIANMUS Data 24 ianuarie 2019 19:15:26
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.5 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;}
}
}