Pagini recente » Cod sursa (job #608690) | Cod sursa (job #2312111) | Cod sursa (job #402705) | Cod sursa (job #529395) | Cod sursa (job #84407)
Cod sursa(job #84407)
#include <stdio.h>
int n, m, c[15001], t, v, st, dr;
void adaug(int t, int v)
{
int p = 1;
while ( t <= n )
{
c[t] += v;
while ( !(t&p))
p *= 2;
t += p;
p *= 2;
}
}
void achitare(int t, int v)
{
int p = 1;
while ( t <= n )
{
c[t] -= v;
while ( !(t&p))
p *= 2;
t += p;
p *= 2;
}
}
int interogare(int dr)
{
int s = 0, p = 1;
while ( dr >0 )
{
s += c[dr];
while ( !(dr & p ))
p *= 2;
dr -=p;
p *= 2;
}
return s;
}
void read()
{
int i, b, r1, r2;
scanf("%d%d", &n, &m);
for ( i = 1; i <= n; i++)
{
scanf("%d", &v);
adaug(i,v);
}
for (i = 1; i <= m; i++)
{
scanf("%d", &b);
if ( b == 0)
{
scanf("%d%d", &t, &v);
achitare(t,v);
}
else
{
scanf("%d%d", &st, &dr);
r1 = interogare(st-1);
r2 = interogare(dr);
printf("%d\n", r2-r1);
}
}
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
read();
return 0;
}