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