Pagini recente » Cod sursa (job #3199085) | Cod sursa (job #3246278) | Cod sursa (job #2471767) | Cod sursa (job #2908086) | Cod sursa (job #492181)
Cod sursa(job #492181)
#include<cstdio>
#include<fstream>
using namespace std;
#define nn 100001
int arb[nn];
int n,m,x,st,t;
inline int comp (int x,int y){
return x < y ? y : x;
}
void upd (int nod,int ft,int bk){
if(ft==bk)
arb[nod]=x;
else{
int mj=(ft+bk)>>1;
if(mj>=st)
upd((nod<<1),ft,mj);
else
upd((nod<<1)+1,mj+1,bk);
arb[nod] = comp (arb[nod<<1],arb[(nod<<1)+1]);
}
}
int que (int nod,int ft,int bk){
if(ft>=st && bk<=x)
return arb[nod];
else{
int mj=(ft+bk)>>1,m1=-1,m2=-1;
if(mj>=st)
m1 = que ((nod<<1),ft,mj);
if(mj<x)
m2 = que ((nod<<1)+1,mj+1,bk);
return comp (m1,m2);
}
}
int main ()
{
ifstream in ("arbint.in");
in>>n>>m;
for(int i=1;i<=n;++i){
in>>x;
st=i;
upd(1,1,n);
}
freopen("arbint.out","w",stdout);
for(;m;--m){
in>>t>>st>>x;
switch (t){
case 1:
upd(1,1,n);
break;
case 0:
printf("%d\n",que(1,1,n));
break;
}
}
in.close ();
return 0;}