Cod sursa(job #1041788)

Utilizator BlueStrutAndrei Prahoveanu BlueStrut Data 26 noiembrie 2013 09:22:48
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int i, n, a[500005];
void heap_up(int k) {
    if (a[k]<a[k/2]) {
        swap(a[k], a[k/2]);
        if (k>1) heap_up(k/2);
    }
}
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d", &n);
    for (i=1;i<=n;i++) {
        scanf("%d", &a[i]);
        if (i>1) heap_up(i);
    }
    for (i=1;i<=n;i++) {
        printf("%d ", a[i]);
        if (2*i+1<=n)
            if (a[2*i]>a[2*i+1]) swap(a[2*i], a[2*i+1]);
    }
    printf("\n"); return 0;
}