Pagini recente » Cod sursa (job #2468903) | Cod sursa (job #587903) | Cod sursa (job #368608) | Cod sursa (job #891155) | Cod sursa (job #327336)
Cod sursa(job #327336)
#include <stdio.h>
FILE *f,*g;
long s1,s2,n,m,c,x,y,a[15001],b[15001],i,j,nr;
int main(){
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
fscanf(f,"%ld%ld",&n,&m);
for (i=1;i<=n;i++){
fscanf(f,"%ld",&a[i]);
nr=0;
while ((i&(1<<nr))==0) nr++;
for (j=i-1<<nr+1;j<=i;j++) b[i]+=a[j];
}
for (i=1;i<=m;i++){
fscanf(f,"%ld%ld%ld",&c,&x,&y);
if (c==0){
nr=0;
while (x<=n){
b[x]-=y;
while ((x&(1<<nr))==0) nr++;
x+=1<<nr;
nr++;
}
}
if (c==1){
nr=0;
s1=0;
s2=0;
x--;
while (x>0){
s1+=b[x];
while ((x&(1<<nr))==0) nr++;
x-=1<<nr;
nr++;
}
nr=0;
while (y>0){
s2+=b[y];
while ((y&(1<<nr))==0) nr++;
y-=1<<nr;
nr++;
}
fprintf(g,"%ld",s2-s1);
}
}
fclose(f);
fclose(g);
return 0;
}