Pagini recente » Cod sursa (job #708310) | Cod sursa (job #780904) | Cod sursa (job #654453) | Cod sursa (job #2162611) | Cod sursa (job #1042477)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n, v[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]);
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>1; m--) pop(m);
for(i=1; i<=n; i++) cout<<v[i]<<" ";
return 0;
}