Pagini recente » Cod sursa (job #1616738) | Cod sursa (job #3129557) | Cod sursa (job #126705) | Cod sursa (job #2640068) | Cod sursa (job #2440069)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream is("datorii.in");
ofstream os("datorii.out");
int n;
vector<int> tree;
int Query(const int pos) {
int sum = 0;
for (int i = pos; i; i -= i & -i)
sum += tree[i];
return sum;
}
void Update(const int pos, const int val) {
for (int i = pos; i <= n; i += i & -i)
tree[i] -= val;
}
int main() {
int m, val;
is >> n >> m;
tree = vector<int>(n + 1, 0);
for (int i = 1; i <= n; ++i) {
is >> val;
Update(i, -val);
}
int type, x, y;
while (m--) {
is >> type >> x >> y;
if (type == 0) {
Update(x, y);
} else {
const int sum = Query(y) - Query(x - 1);
os << sum << "\n";
}
}
is.close();
os.close();
return 0;
}