Pagini recente » Cod sursa (job #2746332) | Cod sursa (job #2918347) | Cod sursa (job #2445774)
#include <iostream>
#include <cstdio>
using namespace std;
#define lsb(x) ((x&(x-1))^x)
int n;
int v[15005];
void add(int p, int x)
{
for(int i = p; i <= n; i += lsb(i))
v[i] += x;
}
int sum(int p)
{
int rez = 0;
for(int i = p; i > 0; i -= lsb(i))
rez += v[i];
return rez;
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int m, i, j, a, b;
scanf("%d%d", &n, &m);
for(i = 1; i <= n; ++i)
{
scanf("%d", &j);
add(i, j);
}
while(m--)
{
scanf("%d%d%d", &j, &a, &b);
if(j == 1)
{
a = sum(a-1);
b = sum(b);
printf("%d\n", b-a);
}
else
{
add(a, -b);
}
}
return 0;
}