Cod sursa(job #778938)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 16 august 2012 12:06:17
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<stdio.h>
int a[50000],b[50000],nr,nr2,ok,n,m,aux;
void heap_up(int i)
{
    if (i>1)
        if (a[i]>a[i/2])
        {
            aux=a[i];
            a[i]=a[i/2];
            a[i/2]=aux;
            heap_up(i/2);
        }
}
void heap_down(int i)
{
    if (a[i]<a[i*2]&&a[i*2]>a[i*2+1])
    {
        aux=a[i];
        a[i]=a[i*2];
        a[i*2]=aux;
        heap_down(i*2);
    }
    if (a[i]<a[i*2+1]&&a[i*2]<a[i*2+1])
    {
        aux=a[i];
        a[i]=a[i*2+1];
        a[i*2+1]=aux;
        heap_down(i*2+1);
    }
}
int main()
{
    int i;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%ld",&n);
    for (i=1;i<=n;i++)
    {
        scanf("%ld",&a[i]);
        heap_up(i);
    }
    nr=0;
    nr2=n;
    for (i=1;i<=nr2;i++)
    {
        b[++nr]=a[1];
        a[1]=a[n];
        n--;
        a[n+1]=0;
        heap_down(1);
    }
    for (i=nr;i>=1;i--)
        printf("%ld\n",b[i]);
    return 0;
}