Pagini recente » Cod sursa (job #279717) | Cod sursa (job #572975) | Cod sursa (job #43317) | Cod sursa (job #3041622) | Cod sursa (job #2757465)
#include <fstream>
using namespace std;
const int P2MAX = (1 << 15);
int aint[P2MAX], val, poz, a, b;
void update(int p, int st, int dr) {
if (st == dr) {
aint[p] -= val;
return;
}
int m = (st + dr) / 2;
if (poz <= m)
update(2 * p, st, m);
else
update(2 * p + 1, m + 1, dr);
aint[p] = aint[2 * p] + aint[2 * p + 1];
}
int query(int p, int st, int dr) {
if (st >= a && dr <= b)
return aint[p];
int m = (st + dr) / 2, s = 0;
if (a <= m)
s += query(2 * p, st, m);
if (b > m)
s += query(2 * p + 1, m + 1, dr);
return s;
}
int main() {
ifstream in("datorii.in");
ofstream out("datorii.out");
int n, m;
in >> n >> m;
for (poz = 1; poz <= n; ++poz) {
in >> val;
val = -val;
update(1, 1, n);
}
while (m--) {
bool tip;
in >> tip;
if (!tip) {
in >> poz >> val;
update(1, 1, n);
}
else {
in >> a >> b;
out << query(1, 1, n) << '\n';
}
}
in.close();
out.close();
return 0;
}