Pagini recente » Cod sursa (job #951514) | Cod sursa (job #1941298) | Cod sursa (job #1693514) | Cod sursa (job #1621814) | Cod sursa (job #1681880)
# include <fstream>
//# define DIM 200010
# define DIM 500010
using namespace std;
//ifstream fin("heapuri.in");
//ofstream fout("heapuri.out");
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[DIM],n,i,x,k;
void add (int x){
v[++k]=x;
int p=k/2,c=k;
while(p!=0){
if(v[c]<v[p]){
swap(v[c],v[p]);
c=p;
p/=2;
}
else
break;
}
}
void off(int poz){
v[poz]=v[k--];
int p=poz/2,c=poz;
while(p!=0){
if(v[c]<v[p]){
swap(v[c],v[p]);
c=p;
p/=2;
}
else
break;
}
p=poz;
c=2*poz;
while(c<=k){
if(v[c]>v[c+1]&&c<k)
c++;
if(v[c]<v[p]){
swap(v[c],v[p]);
p=c;
c*=2;
}
else
break;
}
}
int main () {
fin>>n;
for(i=1;i<=n;i++){
fin>>x;
add(x);
}
for(i=1;i<=n;i++){
fout<<v[1]<<" ";
off(1);
}
return 0;
}