Pagini recente » Cod sursa (job #1253374) | Cod sursa (job #815540) | Cod sursa (job #1010064) | Cod sursa (job #384554)
Cod sursa(job #384554)
#include <cstdio>
#define lsb(i) (int)(i & -i)
int n, m;
int aib[15010];
void update(int poz, int val)
{
for (; poz <= n; poz += lsb(poz))
aib[poz] -= val;
}
int query(int poz)
{
int ret = 0;
for (; poz; poz &= poz - 1)
ret += aib[poz];
return ret;
}
int main()
{
int i, q, r1, r2;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; ++i)
{
scanf("%d", &r1);
aib[i + lsb(i)] += aib[i] += r1;
}
for (; m; --m)
{
scanf("%d %d %d", &q, &r1, &r2);
if (q)
printf("%d\n", query(r2) - query(r1 - 1));
else
update(r1, r2);
}
}