Pagini recente » Cod sursa (job #2890977) | Cod sursa (job #42261) | Cod sursa (job #1599195) | Cod sursa (job #1869555) | Cod sursa (job #1811039)
#include <bits/stdc++.h>
using namespace std;
int ind, val, arb[400100], l, r, n, m, b;
void update(int st, int dr, int pos){
if (st==dr){
arb[pos]-=val;
return;
}
int mid = (st+dr)/2;
if (ind <= mid) update(st, mid, pos*2);
else update(mid+1, dr, pos*2 +1);
arb[pos]= arb[pos*2]+ arb[pos*2 +1];
}
int cer(int st, int dr, int pos){
if (l<=st && dr<=r) return arb[pos];
int a=0, b=0, mid= (st+dr)/2;
if (l<=mid) a= cer(st, mid, 2*pos);
if (r> mid) b= cer(mid+1, dr, 2*pos +1);
return a+b;
}
int main(){
ifstream cin("datorii.in");
ofstream cout("datorii.out");
cin>>n>>m;
for (int i=1; i<=n; i++){
cin>>val;
ind=i;
update(1, n, 1);
}
for (int i=0; i<m; i++){
cin>>b;
if(b){
cin>>l>>r;
cout<<- cer(1, n, 1)<<'\n';
} else {
cin>>ind>>val;
update(1, n, 1);
}
}
return 0;
}