Cod sursa(job #1044094)

Utilizator Catalina_BrinzaBrinza Catalina Catalina_Brinza Data 29 noiembrie 2013 12:23:21
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.34 kb
//
//  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;
}