Cod sursa(job #495311)
| Utilizator | Data | 24 octombrie 2010 18:51:43 | |
|---|---|---|---|
| Problema | Datorii | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <cstdio>
#define lsb(x) x&(-x)
int s[15003];
int main()
{
int n,m,i,a,b;
freopen("datorii.out","w",stdout);
freopen("datorii.in","r",stdin);
scanf("%d %d",&n,&m);
for (i=1;i<=n;++i)
{
scanf("%d",&a);
b=i;
while (b<=n)
s[b]+=a,b+=lsb(b);
}
while (m--)
{
scanf("%d %d %d",&i,&a,&b);
if (i==0)
{while (a<=n)
s[a]-=b,a+=lsb(a);}
else
{
i=0;--a;
while (b>0)
i+=s[b],b-=lsb(b);
while (a>0)
i-=s[a],a-=lsb(a);
printf("%d\n",i);
}
}
return 0;}
