Pagini recente » Cod sursa (job #828880) | Cod sursa (job #2190040) | Cod sursa (job #1654984) | Cod sursa (job #2752380) | Cod sursa (job #199366)
Cod sursa(job #199366)
#include <stdio.h>
#define DIM 1503
int A[DIM], v[DIM],S[DIM];
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,"%d %d",&n,&m);
for (i=1;i<=n;i++) {
fscanf(f,"%d",&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,"%d %d %d",&t,&a,&b);
if (t==0) {
aux=a;
a=b;
b=aux;
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,"%d\n",sum2-sum1);
}
}
fclose(f);
fclose(g);
return 0;
}