Mai intai trebuie sa te autentifici.
Cod sursa(job #3330499)
| Utilizator | Data | 19 decembrie 2025 19:30:47 | |
|---|---|---|---|
| Problema | Datorii | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.93 kb |
#include <iostream>
#include <vector>
long long v[15005];
int n, m;
void update(int nod, int val)
{
for(; nod <= n; nod += (nod & -nod))
v[nod] += val;
}
long long query(int nod)
{
long long sum = 0;
for(; nod > 0; nod -= (nod & -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;
}
