Cod sursa(job #141050)
Utilizator | Data | 22 februarie 2008 18:18:30 | |
---|---|---|---|
Problema | Datorii | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.21 kb |
#include<stdio.h>
long c[15010];
int main()
{ freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
long n,m,x,y,op,i,j,s1=0,s2=0;
scanf("%ld%ld",&n,&m);
for(i=1;i<=n;i++)
{ scanf("%ld",&x);
j=i;
while(j<=n)
{ c[j]+=x;
j+=(j^(j-1))&j;
}
}
for(i=1;i<=m;i++)
{ scanf("%ld%ld%ld",&op,&x,&y);
if(op)
{ s1=0;
while(y>0)
{ s1+=c[y];
y-=(y^(y-1))&y;
}
s2=0;
x--;
while(x>0)
{ s2+=c[x];
x-=(x^(x-1))&x;
}
printf("%ld\n",s1-s2);
}
else { j=x;
while(j<=n)
{ c[j]-=y;
j+=(j^(j-1))&j;
}
}
}
printf("\n");
return 0;
}
#include<stdio.h>
long c[15010];
int main()
{ freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
long n,m,x,y,op,i,j,s1=0,s2=0;
scanf("%ld%ld",&n,&m);
for(i=1;i<=n;i++)
{ scanf("%ld",&x);
j=i;
while(j<=n)
{ c[j]+=x;
j+=(j^(j-1))&j;
}
}
for(i=1;i<=m;i++)
{ scanf("%ld%ld%ld",&op,&x,&y);
if(op)
{ s1=0;
while(y>0)
{ s1+=c[y];
y-=(y^(y-1))&y;
}
s2=0;
x--;
while(x>0)
{ s2+=c[x];
x-=(x^(x-1))&x;
}
printf("%ld\n",s1-s2);
}
else { j=x;
while(j<=n)
{ c[j]-=y;
j+=(j^(j-1))&j;
}
}
}
printf("\n");
return 0;
}