Pagini recente » Cod sursa (job #1984761) | Cod sursa (job #2647628) | Cod sursa (job #382936) | Cod sursa (job #1794638) | Cod sursa (job #29263)
Cod sursa(job #29263)
#include<stdio.h>
#include<math.h>
#define MaxN 15001
int N,a[MaxN];
long M,S[MaxN],c[MaxN];
int main ()
{FILE *f,*g;int i;
long j;
int P;
f=fopen("datorii.in","r");
g=fopen("datorii.out","w");
fscanf(f,"%d %ld\n",&N,&M);
S[0]=0;
short int poz;
for(i=1;i<=N;i++)
{fscanf(f,"%d",&a[i]);S[i]=S[i-1]+a[i];
poz=0;
while ((i&(1<<poz))==0) poz++;
P=i-pow(2,poz);
c[i]=S[i]-S[P];
}
long S1,S2;
short int O;
int T,V;
int q,p;
for(j=1;j<=M;j++)
{fscanf(f,"%d",&O);
if(O==0) {fscanf(f,"%d %d\n",&T,&V);
poz=0;
while (T<=N)
{c[T]-=V;
while ((T&(1<<poz))==0) poz++;
T+=pow(2,poz);
poz++;
}
}
else { fscanf(f,"%d %d\n",&p,&q);
S1=S2=0;
p--;
poz=0;
while (p>0)
{S1+=c[p];
while ((p&(1<<poz))==0)poz++;
p-=pow(2,poz);
poz++;
}
poz=0;
while (q>0)
{S2+=c[q];
while ((q&(1<<poz))==0) poz++;
q-=pow(2,poz);
poz++;
}
fprintf(g,"%ld\n",S2-S1);
}
}
fclose(f);
fclose(g);
return 0;}