Cod sursa(job #1735235)
Utilizator | mIllI 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;}
}
}