Pagini recente » Cod sursa (job #2011756) | Istoria paginii utilizator/ionel666 | Rating Lupu Vlad (envinyatar) | Cod sursa (job #1783744) | Cod sursa (job #199364)
Cod sursa(job #199364)
#include <stdio.h>
long long int A[15003], v[15003],S[15003];
long long int t,a,b,sum1,sum2,k,i,j,x,n,m,s,aux;
int main(){
FILE *f = fopen("datorii.in","r");
FILE *g = fopen("datorii.out","w");
fscanf(f,"%lld %lld",&n,&m);
for (i=1;i<=n;i++) {
fscanf(f,"%lld",&S[i]);
j=i;
while (j%2 == 0) {
v[i]++;
j=j>>1;
}
}
for (i=1;i<=n;i++) {
a=S[i];b=i;
while (b<=n) {
A[b]+=a;
b=b+(1<<v[b]);
}
}
for (k=1;k<=m;k++) {
fscanf(f,"%lld %lld %lld",&t,&a,&b);
if (t==0) {
aux=a;
a=b;
b=a;
a=-a;
while (b<=n) {
A[b]+=a;
b=b+(1<<v[b]);
}
} else {
x = a-1;
sum1 = 0;
while (x) {
sum1+=A[x];
x = x-(1<<v[x]);
}
x = b;
sum2 = 0;
while (x) {
sum2+=A[x];
x = x-(1<<v[x]);
}
fprintf(g,"%lld\n",sum2-sum1);
}
}
fclose(f);
fclose(g);
return 0;
}