Pagini recente » Cod sursa (job #3330500) | Cod sursa (job #3190306) | Cod sursa (job #214402) | Cod sursa (job #3328187) | Cod sursa (job #3330497)
#include <iostream>
#include <string>
#include <queue>
#include <climits>
int v[15001];
int n, m;
int getNext(int x)
{
return (x & -x);
}
void update(int nod, int val)
{
for(; nod <= n; nod += getNext(nod))
v[nod] += val;
}
int query(int nod)
{
int sum = 0;
for(; nod > 0; nod -= getNext(nod))
sum += v[nod];
return sum;
}
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
std::cin >> n >> m;
for(int i = 1; i <= n; i ++)
{
int a;
std::cin >> a;
update(i, a);
}
for(int i = 1; i <= m; i++)
{
int op, a, b;
std::cin >> op >> a >> b;
if(op == 0)
{
update(a, -b);
}
else if(op == 1)
update(a, b);
else
std::cout << query(b) - query(a - 1) << "\n";
}
return 0;
}