Pagini recente » Cod sursa (job #2913731) | Cod sursa (job #1511808) | Cod sursa (job #1998140) | Cod sursa (job #1618891) | Cod sursa (job #381883)
Cod sursa(job #381883)
#include <cstdio>
#define DIM 15010
using namespace std;
int aib [DIM], N;
inline int lsb (int x)
{
return ( x & (x - 1) ^ x );
}
void update (int k, int val, int pr)
{
while (k <= N)
{
aib [k] += val*pr;
k += lsb (k);
}
}
int query (int k)
{
int sum = 0;
while ( k > 0 )
{
sum += aib [k];
k -= lsb (k);
}
return sum;
}
void read ()
{
int i, M, p, q, t, v, op, a;
scanf ("%d%d\n", &N, &M);
for (i = 1; i <= N; i++)
{
scanf ("%d", &a);
update (i, a, 1);
}
for ( ; M--; )
{
scanf ("%d", &op);
if (op == 0)
{
scanf ("%d%d\n", &t, &v);
update (t, v, -1);
}
else
{
scanf ("%d%d", &p, &q);
printf ("%d\n",query (q) - query (p - 1));
}
}
}
int main ()
{
freopen ("datorii.in", "r", stdin);
freopen ("datorii.out", "w", stdout);
read ();
return 0;
}