Pagini recente » Cod sursa (job #627630) | Cod sursa (job #2610412) | Cod sursa (job #1726310) | Cod sursa (job #1044737) | Cod sursa (job #1602283)
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[15000 * 4];
int n, m, val, pos, t, a, b, sum;
void update(int nod, int left, int right){
if(left == right){
v[nod] += val;
return;
}
int mij = (left + right) / 2;
if(pos <= mij)
update(2 * nod, left, mij);
else
update(2 * nod + 1, mij + 1, right);
v[nod] += val;
}
void query(int nod, int left, int right){
if(left > b || right < a)
return;
if(a <= left && right <= b){
sum += v[nod];
return;
}
int mij = (left + right) / 2;
query(2 * nod, left, mij);
query(2 * nod + 1, mij + 1, right);
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; ++i){
fin >> val;
pos = i;
update(1, 1, n);
}
for(int i = 1; i <= m; ++i){
fin >> t >> a >> b;
if(t == 0){
val = -b;
pos = a;
update(1, 1, n);
}
else {
sum = 0;
query(1, 1, n);
fout << sum << '\n';
}
}
return 0;
}