Pagini recente » Cod sursa (job #235139) | Cod sursa (job #81195) | Cod sursa (job #859088) | Cod sursa (job #2397037) | Cod sursa (job #1042468)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n, v[500001], 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;
}