#include<iostream>
using namespace std;
class Maxsegtree
{
int* P;
int* Q;
public:
Maxsegtree(int N)
{
P=new int[N];
Q=new int[2*N];
}
~Maxsegtree()
{
delete []P;
delete []Q;
}
int getP(int i) { return P[i];}
void setP(int i,int x){ P[i]=x; }
void build_tree(int node,int l,int r)
{
if(l==r)
Q[node]=l;
else
{
build_tree(node*2,l,(l+r)/2);
build_tree(node*2+1,(l+r)/2+1,r);
if(P[Q[2*node]] > P[Q[2*node+1]])
Q[node]=Q[2*node];
else
Q[node]=Q[2*node+1];
}
}
};
class Minsegtree
{
int *A;
int *B;
public:
Minsegtree(int N)
{
A=new int[N];
B=new int[2*N];
}
~Minsegtree()
{
delete []A;
delete []B;
}
int getA(int i){return A[i];}
void setA(int i,int x){A[i]=x;}
void build_mintree(int node,int l,int r)
{
if(l==r)
B[node]=l;
else
{
build_mintree(node*2,l,(l+r)/2);
build_mintree(node*2+1,(l+r)/2+1,r);
if(A[B[2*node]] <= A[B[2*node+1]])
B[node]=B[2*node];
else
B[node]=B[2*node+1];
}
}
};
int main()
{
int n;
int x;
cin>>n;
Minsegtree mint(n);
Maxsegtree maxt(n);
for(int i=0;i<n;i++)
{
cin>>x;
mint.setA(i,x);
maxt.setP(i,x);
}
cout<<"Before function is called"<<endl;
for(int i=0;i<n;i++)
cout<<maxt.getP(i)<<" ";
cout<<endl;
mint.build_mintree(1,0,n-1);
cout<<"After function is called"<<endl;
for(int i=0;i<n;i++)
cout<<maxt.getP(i)<<" ";
cout<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmNsYXNzIE1heHNlZ3RyZWUKewoJaW50KiBQOwoJaW50KiBROwoJcHVibGljOgoJCU1heHNlZ3RyZWUoaW50IE4pCgkJewoJCQlQPW5ldyBpbnRbTl07CgkJCVE9bmV3IGludFsyKk5dOwoJCX0KCQkKCQkKCQl+TWF4c2VndHJlZSgpCgkJewoJCQlkZWxldGUgW11QOwoJCQlkZWxldGUgW11ROwoJCX0KCQkKCQlpbnQgZ2V0UChpbnQgaSkgeyByZXR1cm4gUFtpXTt9CgkJCgkJdm9pZCBzZXRQKGludCBpLGludCB4KXsgUFtpXT14OyB9CgoJCXZvaWQgYnVpbGRfdHJlZShpbnQgbm9kZSxpbnQgbCxpbnQgcikKCQl7CgkJCWlmKGw9PXIpCgkJCQlRW25vZGVdPWw7CgkJCWVsc2UKCQkJewoJCQkJYnVpbGRfdHJlZShub2RlKjIsbCwobCtyKS8yKTsKCQkJCWJ1aWxkX3RyZWUobm9kZSoyKzEsKGwrcikvMisxLHIpOwoJCQkJCgkJCQlpZihQW1FbMipub2RlXV0gPiBQW1FbMipub2RlKzFdXSkKCQkJCQlRW25vZGVdPVFbMipub2RlXTsKCQkJCWVsc2UKCQkJCQlRW25vZGVdPVFbMipub2RlKzFdOwoJCQl9CgkJfQoKfTsKCgpjbGFzcyBNaW5zZWd0cmVlCnsKCWludCAqQTsKCWludCAqQjsKCXB1YmxpYzoKCQlNaW5zZWd0cmVlKGludCBOKQoJCXsKCQkJQT1uZXcgaW50W05dOwoJCQlCPW5ldyBpbnRbMipOXTsKCQl9CgkJCgkJfk1pbnNlZ3RyZWUoKQoJCXsKCQkJZGVsZXRlIFtdQTsKCQkJZGVsZXRlIFtdQjsKCQl9CgkJCgkJaW50IGdldEEoaW50IGkpe3JldHVybiBBW2ldO30KCQkKCQl2b2lkIHNldEEoaW50IGksaW50IHgpe0FbaV09eDt9CgkJCgkJdm9pZCBidWlsZF9taW50cmVlKGludCBub2RlLGludCBsLGludCByKQoJCXsKCQkJaWYobD09cikKCQkJCUJbbm9kZV09bDsKCQkJZWxzZQoJCQl7CgkJCQlidWlsZF9taW50cmVlKG5vZGUqMixsLChsK3IpLzIpOwoJCQkJYnVpbGRfbWludHJlZShub2RlKjIrMSwobCtyKS8yKzEscik7CgkJCQkKCQkJCWlmKEFbQlsyKm5vZGVdXSA8PSBBW0JbMipub2RlKzFdXSkKCQkJCQlCW25vZGVdPUJbMipub2RlXTsKCQkJCWVsc2UKCQkJCQlCW25vZGVdPUJbMipub2RlKzFdOwoJCQl9CgkJfQp9OwoKCmludCBtYWluKCkKewoJaW50IG47CglpbnQgeDsKCWNpbj4+bjsKCU1pbnNlZ3RyZWUgbWludChuKTsKCU1heHNlZ3RyZWUgbWF4dChuKTsKCQoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQljaW4+Png7CgkJbWludC5zZXRBKGkseCk7CgkJbWF4dC5zZXRQKGkseCk7Cgl9CgkKCWNvdXQ8PCJCZWZvcmUgZnVuY3Rpb24gaXMgY2FsbGVkIjw8ZW5kbDsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJY291dDw8bWF4dC5nZXRQKGkpPDwiICI7Cgljb3V0PDxlbmRsOwoJCgltaW50LmJ1aWxkX21pbnRyZWUoMSwwLG4tMSk7CgkKCQoJY291dDw8IkFmdGVyIGZ1bmN0aW9uIGlzIGNhbGxlZCI8PGVuZGw7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJCWNvdXQ8PG1heHQuZ2V0UChpKTw8IiAiOwoJY291dDw8ZW5kbDsKCQoJcmV0dXJuIDA7Cn0=