Pagini recente » Cod sursa (job #2391561) | Cod sursa (job #2494627) | Cod sursa (job #2838157) | Cod sursa (job #539911) | Cod sursa (job #2907722)
#include <bits/stdc++.h>
#define NMAX ((int)15e3)
#define COMM_UPDATE 0
#define COMM_SUM_QUERY 1
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int tree[NMAX + 1];
int v[NMAX + 1];
void update(int index, const int new_val, const int n_max) {
while (index <= n_max) {
tree[index] += new_val;
index += (index & -index);
}
}
int get_val(int index) {
int val = 0;
while (index > 0) {
val += tree[index];
index -= (index & -index);
}
return val;
}
int main(void) {
int n, m;
fin >> n >> m;
for (int i = 1; i <= n; ++i) {
fin >> v[i];
update(i, v[i], n);
}
for (int i = 0; i < m; ++i) {
int type;
fin >> type;
switch (type) {
case COMM_UPDATE:
int pos, val;
fin >> pos >> val;
v[pos] -= val;
update(pos, -val, n);
break;
case COMM_SUM_QUERY:
int left, right;
fin >> left >> right;
fout << get_val(right) - get_val(left - 1) << "\n";
}
}
return 0;
}