Pagini recente » Cod sursa (job #2017254) | Cod sursa (job #1870043) | Cod sursa (job #2138841) | Cod sursa (job #1789931) | Cod sursa (job #641318)
Cod sursa(job #641318)
#include <stdio.h>
#include <fstream>
using namespace std;
#define dim 15001
inline int Minim(int a, int b)
{
return a < b ? a : b;
}
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;
}