Pagini recente » Cod sursa (job #1842978) | Cod sursa (job #2960062) | Cod sursa (job #2113051) | dau_cu_sabia | Cod sursa (job #2753160)
#include <fstream>
std::ifstream in("datorii.in");
std::ofstream out("datorii.out");
const int N = 15e3 + 1;
struct Aib {
int n;
int v[N];
void update(int, int);
int query(int);
} aib;
void Aib::update(int idx, int val) {
while (idx <= n) {
v[idx] += val;
idx += idx & (-idx);
}
}
int Aib::query(int idx) {
int ret = 0;
while (idx) {
ret += v[idx];
idx -= idx & (-idx);
}
return ret;
}
int main() {
int m;
in >> aib.n >> m;
for (int i = 1; i <= aib.n; ++i) {
int x;
in >> x;
aib.update(i, x);
}
for (int i = 0; i < m; ++i) {
int op, p1, p2;
in >> op >> p1 >> p2;
if (!op) {
aib.update(p1, -p2);
}
else {
out << aib.query(p2) - aib.query(p1 - 1) << '\n';
}
}
}