Pagini recente » Cod sursa (job #2950970) | Cod sursa (job #1485612) | Cod sursa (job #2833242) | Cod sursa (job #1081743) | Cod sursa (job #3131447)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
constexpr int nmax = 15001;
int n;
int aib[nmax];
void build() {
for (int i = 1; i <= n; ++i) {
int p = i + (i & -i);
if (p <= n)
aib[p] += aib[i];
}
}
int sum(int v) {
int r = 0;
while (v)
r += aib[v], v -= v & -v;
return r;
}
void update(int poz, int val) {
while (poz <= n) {
aib[poz] -= val;
poz += poz & -poz;
}
}
int sum(int l, int r) { return sum(r) - sum(l - 1); }
int main() {
int m;
in >> n >> m;
for (int i = 1; i <= n; ++i)
in >> aib[i];
build();
for (int i = 1; i <= m; ++i) {
int op, s, r;
in >> op >> s >> r;
if (op == 0)
update(s, r);
else
out << sum(s, r) << "\n";
}
return 0;
}