Pagini recente » Cod sursa (job #1424553) | Cod sursa (job #1507494) | Cod sursa (job #3196991) | Cod sursa (job #1716388) | Cod sursa (job #1059284)
#include<fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int tree[2 << 15], n, m, i, val, poz, cod, sum, l, r;
void update(int rad, int left, int right) {
if(left == right) {
tree[rad] -= val;
return;
}
int med = (left + right) / 2;
if(poz <= med) {
update(2*rad, left, med);
} else {
update(2*rad+1, med+1, right);
}
tree[rad] = tree[2*rad] + tree[2*rad+1];
}
void query(int rad, int left, int right) {
if(l <= left && right <= r) {
sum += tree[rad];
return;
}
int med = (left + right) / 2;
if(l <= med) {
query(2*rad, left, med);
}
if(r > med) {
query(2*rad+1, med+1, right);
}
}
int main() {
fin >> n >> m;
for(i = 1; i <= n; i++) {
fin >> val;
val = 0 - val;
poz = i;
update(1, 1, n);
}
for(i = 1; i <= m; i++) {
fin >> cod;
if(cod == 0) {
fin >> poz >> val;
update(1, 1, n);
} else {
fin >> l >> r;
sum = 0;
query(1, 1, n);
fout << sum << "\n";
}
}
return 0;
}