Mai intai trebuie sa te autentifici.
Cod sursa(job #601943)
Utilizator | Data | 8 iulie 2011 15:33:37 | |
---|---|---|---|
Problema | Datorii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <stdio.h>
const int maxn=15001;
int i,N,M,cod,a,b,Arb[maxn];
void update(int poz, int val)
{
while(poz<=N)
{
Arb[poz]+=val;
poz+=(poz & (-poz));
}
}
int suma(int poz)
{
int S=0;
while(poz)
{
S+=Arb[poz];
poz-=(poz & (-poz));
}
return S;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&N,&M);
for(i=1;i<=N;i++)
{
int x;
scanf("%d",&x);
update(i,x);
}
for(i=1;i<=M;i++)
{
scanf("%d %d %d",&cod,&a,&b);
if(cod==0)
{
update(a,-b);
}
else // cod == 1
{
printf("%d\n",suma(b)-suma(a-1));
}
}
}