Pagini recente » Cod sursa (job #783422) | Cod sursa (job #2559868) | Cod sursa (job #1070851) | Cod sursa (job #2866670) | Cod sursa (job #2400252)
#include<fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
#define maxn 15050
int a[4*maxn],N,M,op,poz,val,start,stop,maxim;
void update(int nod, int st, int dr){
if(st==dr){
a[nod]+=val;
return;
}
int mij=(st+dr)/2;
if(poz<=mij)
update(2*nod,st,mij);
else update(2*nod+1,mij+1,dr);
a[nod]=a[nod*2]+a[nod*2+1];
}
void query(int nod, int st, int dr){
if(start<=st && dr<=stop){
maxim+=a[nod];
return;
}
int mij=(st+dr)/2;
if(start<=mij) query(2*nod,st,mij);
if(mij<stop) query(2*nod+1,mij+1,dr);
}
int main(){
cin>>N>>M;
for(poz=1; poz<=N; poz++){
cin>>val;
update(1,1,N);
}
while(M){
cin>>op;
if(op==0){
cin>>poz>>val;
val*=-1;
update(1,1,N);
}
else{
cin>>start>>stop;
maxim=0;
query(1,1,N);
cout<<maxim<<'\n';
}
M--;
}
return 0;
}///6 4 2 1 3 2 0 0 1 0 0 2