Pagini recente » Cod sursa (job #1533328) | Cod sursa (job #1236609) | Cod sursa (job #1218934) | Cod sursa (job #2220275) | Cod sursa (job #1042479)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n, v[5000001], s[5000001], i, m;
void push(int i)
{
while(v[i/2]<v[i] && i>1)
{
swap(v[i/2], v[i]);
i/=2;
}
}
void maxim(int i, int &j, int &x)
{
if(v[2*i]>=v[2*i+1])
{
j=2*i;
x=v[j];
}
else
{
j=2*i+1;
x=v[j];
}
}
void pop(int m)
{
int i, j, x;
swap(v[1], v[m]);
s[m]=v[m];
v[m]=0;
i=1;
maxim(i, j, x);
while(i<m && j<m && v[i]<x)
{
swap(v[i],v[j]);
i=j;
maxim(i, j, x);
}
}
int main()
{
cin>>n;
for(i=1; i<=n; i++)
{
cin>>v[i];
push(i);
}
for(m=n; m>0; m--) pop(m);
for(i=1; i<=n; i++) cout<<s[i]<<" ";
return 0;
}