Pagini recente » Cod sursa (job #1407583) | Cod sursa (job #2121520) | Cod sursa (job #452263) | Cod sursa (job #4805) | Cod sursa (job #2072341)
#include <bits/stdc++.h>
using namespace std;
int o,H[70010],n,m,idx,nr,l,r;
void update1(int nod, int st, int dr){
if (st==dr){
H[nod]=nr;
return;
}
int mid=(st+dr)/2;
if (idx<=mid) update1(2*nod,st,mid);
else update1(2*nod+1,mid+1,dr);
H[nod]=H[2*nod]+H[2*nod+1];
}
void update2(int nod, int st, int dr){
if (st==dr){
H[nod]-=nr;
return;
}
int mid=(st+dr)/2;
if (idx<=mid) update2(2*nod,st,mid);
else update2(2*nod+1,mid+1,dr);
H[nod]=H[2*nod]+H[2*nod+1];
}
int query(int nod, int st, int dr){
if (l<=st && r>=dr) return H[nod];
int mid=(st+dr)/2;
int left=0, right=0;
if (l<=mid) left=query(2*nod,st,mid);
if (r>mid) right=query(2*nod+1,mid+1,dr);
return left+right;
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
ifstream cin ("datorii.in");
ofstream cout ("datorii.out");
cin>>n>>m;
for (int i=1; i<=n; i++){
cin>>nr;
idx=i;
update1(1,1,n);
}
for (int i=1; i<=m; i++){
cin>>o;
if (!o){
cin>>idx>>nr;
update2(1,1,n);
}
else{
cin>>l>>r;
cout<<query(1,1,n)<<"\n";
}
}
return 0;
}