Pagini recente » Cod sursa (job #1264137) | Cod sursa (job #1265117) | Cod sursa (job #1948732) | Cod sursa (job #1857043) | Cod sursa (job #641319)
Cod sursa(job #641319)
#include <cstdio>
#include <cstring>
#define dim 15001
int N, M, T;
int Arb[dim];
int C, S;
void Update(int poz, int val)
{
for(C = 0; poz <= N; C++)
{
Arb[poz] += val;
while ( !(poz & (1<<C)) ) C++;
poz += (1<<C);
}
}
int Query(int poz)
{
for(C = 0, S = 0; poz > 0;C++ )
{
S += Arb[poz];
while ( !(poz & (1<<C)) ) C++;
poz -= (1<<C);
}
return S;
}
int main()
{
memset(Arb,0,sizeof(Arb));
int K, X, Y;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d", &N, &M);
for ( int i = 1; i <= N; i++ )
{
scanf("%d", &T);
Update(i,T);
}
for ( ; M; M-- )
{
scanf("%d%d%d", &K, &X, &Y);
if (!K) Update(X,-Y);
else
printf("%d\n", Query(Y)-Query(X-1));
}
return 0;
}