Cod sursa(job #964992)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 22 iunie 2013 21:31:09
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

int Arb[500000*4], n;

ifstream f("algsort.in");
ofstream g("algsort.out");

void update( int nod, int val )
{
    if ( Arb[nod] <= val )
    {
        if ( Arb[2*nod+1] == 0 )
        {
            Arb[2*nod+1] = val;
            return;
        }
        else
            update(2*nod+1,val);
    }

    if ( Arb[nod] > val )
    {
        if ( Arb[2*nod] == 0 )
        {
            Arb[2*nod]  = val;
            return;
        }
        else
            update(2*nod,val);
    }
}

void afis( int nod )
{
    if ( Arb[nod] == 0 )
        return;

    afis(2*nod);
    g << Arb[nod] << " ";
    afis(2*nod+1);
}

int main()
{
    int n, a;

    f >> n >> a;

    Arb[1] = a;

    for ( int i = 1; i < n; i++ )
    {
        f >> a;
        update(1,a);
    }

    afis(1);

    return 0;
}