Pagini recente » Cod sursa (job #989676) | Cod sursa (job #1986) | Cod sursa (job #124859) | Cod sursa (job #2330335) | Cod sursa (job #1248186)
#include <fstream>
using namespace std;
int v[15005];
int aib[150005];
int n, m;
void update(int i, int val) {
do {
aib[i] += val;
i = i | (i + 1);
} while (i < n);
}
int query(int i) {
int s = 0;
do {
s += aib[i];
i = i - ((i ^ (i + 1) + 1) / 2);
} while (i > 0);
return s;
}
int main() {
ifstream in("datorii.in");
ofstream out("datorii.out");
in >> n >> m;
for (int i = 0; i < n; ++i) {
in >> v[i];
update(i, v[i]);
}
int operatie, v1, v2;
for (int i = 0; i < m; ++i) {
in >> operatie >> v1 >> v2;
if (operatie == 0)
update(v1 - 1, -v2);
else {
if (v1 - 2 >= 0)
out << query(v2 - 1) - query(v1 - 2) << '\n';
else
out << query(v2 - 1) << '\n';
}
}
in.close();
out.close();
return 0;
}