Pagini recente » Cod sursa (job #1905627) | Cod sursa (job #414406) | Borderou de evaluare (job #1004062) | Cod sursa (job #3233100) | Cod sursa (job #1054000)
#include<fstream>
#define dim 500007
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int pos[dim],h[2*dim],N,a[dim];
inline int rs(int nod){
return 2*nod+1;
}
inline int ls(int nod){
return 2*nod;
}
void urca(int k){
while( k>1 && h[k>>1]>h[k]){
swap(h[k],h[k>>1]);
k>>=1;
}
}
void coboara( int nod){
int fiu=nod;
int rss=rs(nod);
int lss=ls(nod);
if(lss<=N && h[fiu]>h[lss] ){
fiu=lss;
}
if(rss<=N && h[fiu]>h[rss]){
fiu=rss;
}
if(nod!=fiu){
swap(h[fiu],h[nod]);
coboara(fiu);
}
}
void insert( int X ){
h[++N]=X;
urca(N);
}
void erase( int X ){
swap(h[X],h[N]);
--N;
coboara(X);
}
int main () {
int n,x;
f>>n;
for(int i=1;i<=n;++i){
f>>x;
insert(x);
}
g<<h[1]<<" ";
for(int i=2;i<=n;++i){
erase(1);
g<<h[1]<<" ";
}
return 0;
}