Pagini recente » Cod sursa (job #396772) | Cod sursa (job #1186852) | Cod sursa (job #2468845) | Cod sursa (job #1779985) | Cod sursa (job #123959)
Cod sursa(job #123959)
#include <stdio.h>
#include <math.h>
long n, m, c[15010];
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
long i, poz, x, j, op, s1, s2, st, dr;
scanf("%ld %ld", &n, &m);
for (i = 1; i <= n; i++)
{
j = i;
scanf("%ld",&x);
while (j <= n)
{
c[j] += x;
j += (j ^ (j-1)) & j;
}
}
for (i = 1; i <= m; i++)
{
scanf ("%ld %ld %ld", &op, &st, &dr);
if (op)
{
s1 = 0;
while (dr > 0)
{
s1 += c[dr];
dr -= (dr ^ (dr-1)) & dr;
}
st--;
s2 = poz = 0;
while (st > 0)
{
s2 += c[st];
st -= (st ^ (st-1)) & st;
}
printf("%ld\n",s1 - s2);
}
else
{
while (st <= n)
{
c[st] -= dr;
st += (st ^ (st-1)) & st;
}
}
}
return 0;
}