Pagini recente » Monitorul de evaluare | Cod sursa (job #710060) | Monitorul de evaluare | Cod sursa (job #2048673) | Cod sursa (job #1044094)
//
// main.cpp
// heap-sort
//
// Created by Catalina Brinza on 11/26/13.
// Copyright (c) 2013 Catalina Brinza. All rights reserved.
//
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int main()
{long long n,i,x, a[500005],j,aux;
f>>n>>x; a[1]=x;
for (i=2;i<=n;++i)
{
f>>a[i];
long long in=i;
while (a[in]<a[in/2])
{
aux=a[in];
a[in]=a[in/2];
a[in/2]=aux;
in=in/2;
}
}
long long m=n;
for (i=1;i<=m;++i)
{
g<<a[1]<<' ';
a[1]=a[n];
n--;
j=1;
bool ok=false;
while (!ok)
{
if (a[j]>a[j*2] && j*2<=n)
{
if ((a[j*2+1]<a[j*2]) && (j*2+1<=n))
{
aux=a[j*2+1];
a[j*2+1]=a[j];
a[j]=aux;
j=j*2+1;
if (j==n) break;
}
else
{
aux=a[j];
a[j]=a[j*2];
a[j*2]=aux;
j=2*j;
if (j==n) break;
}
}
else if (a[j*2+1]<a[j] && j*2+1<=n)
{
aux=a[j*2+1];
a[j*2+1]=a[j];
a[j]=aux;
j=j*2+1;
if (j==n) break;
}
else break;
}
}
return 0;
}