Pagini recente » Cod sursa (job #713369) | redsnow_1 | Cod sursa (job #2486520) | Cod sursa (job #373383) | Cod sursa (job #916680)
Cod sursa(job #916680)
#include <cstdio>
#include <algorithm>
#define NMAX 500005
using namespace std;
int n, A[NMAX], limN;
void go_down(int node)
{
if (2 * node <= limN)
{
int minNode = 2 * node;
if (2 * node + 1 <= limN && A[2 * node + 1] < A[minNode])
minNode = 2 * node + 1;
if (A[minNode] < A[node])
swap(A[node], A[minNode]), go_down(minNode);
}
}
void cstr_heap()
{
int i;
for (i = n; i >= 1; i--)
go_down(i);
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d",&n);
int i;
for (i = 1, limN = n; i <= n; i++)
scanf("%d",&A[i]);
cstr_heap();
for (i = 1; i <= n; i++)
{
printf("%d ",A[1]);
A[1] = A[limN]; limN--;
go_down(1);
}
return 0;
}