Pagini recente » Cod sursa (job #3264414) | Cod sursa (job #1158099) | Cod sursa (job #337566) | Cod sursa (job #545843) | Cod sursa (job #1043943)
#include<fstream>
#define lim 2000000000
#define dim 500200
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int arb[4*dim+66],v[dim],pos,i,val,n;
inline int minim(int a ,int b ){
if(a<b)
return a;
return b;
}
void update(int nod,int st,int dr ){
if(st==dr) {
arb[nod]=val;
return ;
}
else {
int mid=st+(dr-st)/2;
if(pos<=mid)
update(2*nod,st,mid);
else
update(2*nod+1,mid+1,dr);
}
arb[nod]=minim(arb[2*nod],arb[2*nod+1]);
}
void update2(int nod,int st,int dr) {
if(st==dr) {
arb[nod]=lim;
return ;
}
else {
int mid=st+(dr-st)/2;
if(arb[2*nod]==val)
update2(2*nod,st,mid);
else
if(arb[2*nod+1]==val)
update2(2*nod+1,mid+1,dr);
}
arb[nod]=minim(arb[2*nod],arb[2*nod+1]);
}
int main () {
f>>n;
for(i=1;i<=n;++i){
f>>v[i];
pos=i;
val=v[i];
update(1,1,n);
}
for(i=1;i<=n;++i){
g<<arb[1]<<" ";
val=arb[1];
update2(1,1,n);
}
return 0;
}