Pagini recente » Cod sursa (job #2081336) | Cod sursa (job #1353289) | Cod sursa (job #2080254) | Cod sursa (job #1843428) | Cod sursa (job #2904371)
#include <fstream>
#include <iostream>
#define MAX 100005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, v[10 * MAX];
int x, y, z, q, sum_rest;
bool opt;
void update(int nod, int st, int dr) {
if (st == dr)
v[nod] += y;
else {
int mij = (st + dr) / 2;
if (x <= mij)
update(2 * nod, st, mij);
else
update(2 * nod + 1, mij + 1, dr);
v[nod] = v[2 * nod] + v[2 * nod + 1];
}
}
void query(int nod, int st, int dr) {
if (z <= st && dr <= q)
sum_rest += v[nod];
else {
int mij = (st + dr) / 2;
if (z <= mij)
query(2 * nod, st, mij);
if (q > mij)
query(2 * nod + 1, mij + 1, dr);
}
}
int main() {
fin >> n >> m;
for (int i = 1; i <= n; i++) {
x = i;
fin >> y;
update(1, 1, n);
}
for (int i = 1; i <= m; i++) {
fin >> opt;
if (opt == 0) {
fin >> x >> y;
y *= (-1);
update(1, 1, n);
}
else {
sum_rest = 0;
fin >> z >> q;
query(1, 1, n);
fout << sum_rest << "\n";
}
}
}