Pagini recente » Cod sursa (job #2460304) | Cod sursa (job #2639921) | Cod sursa (job #2661482) | Cod sursa (job #3004686) | Cod sursa (job #679199)
Cod sursa(job #679199)
#include<fstream>
#define lim 15002
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[lim],n,m,i,arb[3*lim],val,pos,a,b,op,suma,o;
void update(int nod,int st,int dr,int o){
if(st==dr){
if(!o)
arb[nod]=val;
else
arb[nod]-=val;
}
else{
int mij=(st+dr)/2;
if(pos<=mij)
update(2*nod,st,mij,o);
else
update(2*nod+1,mij+1,dr,o);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void query(int nod,int st,int dr){
if(a<=st && b>=dr){
suma+=arb[nod];
}
else{
int mij=(st+dr)/2;
if(a<=mij)
query(2*nod,st,mij);
if(b>mij)
query(2*nod+1,mij+1,dr);
}
}
int main (){
f>>n>>m;
o=0;
for(i=1;i<=n;i++){
f>>v[i];
pos=i;
val=v[i];
update(1,1,n,o);
}
o=1;
for(;m;m--){
f>>op>>a>>b;
if(!op){
pos=a;
val=b;
update(1,1,n,o);
}
else{
suma=0;
query(1,1,n);
g<<suma<<"\n";
}
}
return 0;
}