Cod sursa(job #287470)
| Utilizator | Data | 24 martie 2009 21:36:59 | |
|---|---|---|---|
| Problema | Datorii | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include<cstdio>
int H[100000],n;
void update(int p,int val)
{
for(;p<=n;p+=p & -p) H[p]-=val;
}
int sum(int p)
{
int s=0;
for(;p;p-=p &-p) s+=H[p];
return s;
}
int main()
{
int i,m,k,x,y,a;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
x=i;
update(x,-a);
}
for(i=0;i<m;i++)
{
scanf("%d%d%d",&k,&x,&y);
if(k) printf("%d\n",sum(y)-sum(x-1));
else update(x,y);
}
return 0;
}
