Pagini recente » Cod sursa (job #929579) | Cod sursa (job #599500) | Cod sursa (job #414678) | Cod sursa (job #2673922) | Cod sursa (job #700368)
Cod sursa(job #700368)
#include<fstream>
#define dim 100002
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int arb[3*dim],n,i,a,b,op,val,pos,maxim,t,q,v[dim];
inline int max(int a,int b){
if(a<b)
return b;
return a;
}
void update(int nod,int st ,int dr){
if(st==dr){
arb[nod]=v[pos];
return ;
}
int mij=(st+dr)/2;
if(pos<=mij)
update(2*nod,st,mij);
else
update(2*nod+1,mij+1,dr);
arb[nod]=max(arb[2*nod],arb[2*nod+1]);
}
void query(int nod,int st,int dr){
if(a<=st && b>=dr){
if(arb[nod]>maxim)
maxim=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>>q;
for(i=1;i<=n;i++){
f>>v[i];
pos=i;
update(1,1,n);
}
for(i=1;i<=q;i++){
f>>t>>a>>b;
if(t==0){
maxim=-1;
query(1,1,n);
g<<maxim<<"\n";
}
else{
v[a]=b;
pos=a;
update(1,1,n);
}
}
return 0;
}