Pagini recente » Cod sursa (job #2954544) | Cod sursa (job #3270344) | Cod sursa (job #34866) | Cod sursa (job #2058488) | Cod sursa (job #2072927)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int h[35000], nr , idx, l, r, x, y, f, n, m, u;
void update(int st, int dr, int pos) {
if (st==dr) {
if (!u) h[pos] = nr;
else h[pos] = h[pos] - nr;
return;
}
int mid = (st + dr)/2;
if (idx <= mid) update(st, mid, pos*2);
else update(mid+1, dr, pos*2+1);
h[pos] = h[2*pos] + h[2*pos+1];
}
int query(int st, int dr, int pos) {
if (l<=st && dr<=r) return h[pos];
int left = 0, right = 0;
int mid = (st+dr)/2;
if (l<=mid) left = query(st, mid, 2*pos);
if (r>mid) right = query(mid+1, dr, 2*pos+1);
return left + right;
}
int main() {
fin>>n>>m;
for (int i=1; i<=n; i++) {
fin>>nr;
idx = i;
update(1, n, 1);
}
u=1;
for (int i=0; i<m; i++) {
fin>>f;
if (f) {
fin>>l>>r;
fout<<query(1,n,1)<<'\n';
} else {
fin>>idx>>nr;
update(1, n, 1);
}
}
return 0;
}