Cod sursa(job #1041792)

Utilizator BlueStrutAndrei Prahoveanu BlueStrut Data 26 noiembrie 2013 09:29:19
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 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);
    }
    if (2*k+1<=n)
    if (a[2*k]>a[2*k+1]) swap(a[2*k], a[2*k+1]);
}
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;
}