Cod sursa(job #979965)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 3 august 2013 17:00:53
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>

using namespace std;

#define LeftSon(i) 2*i
#define RightSon(i) 2*i+1

#define Nmax 500005

struct nod
{
    int val;
    int nr;

} BST[Nmax];

int N;

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

void inserare( int nod, int key )
{
    if ( BST[nod].val == key || BST[nod].nr == 0 )
            BST[nod].val = key,
            BST[nod].nr++;
    else
        if ( BST[nod].val > key )
                inserare(LeftSon(nod),key);
        else
                inserare(RightSon(nod),key);
}

void print( int nod )
{
    if ( BST[nod].nr > 0 )
    {
        print(LeftSon(nod));

        while(BST[nod].nr > 0)
        {
            g << BST[nod].val << " ";
            BST[nod].nr--;
        }

        print(RightSon(nod));
    }
}
int main()
{
    int n, a;

    f >> n;
    for ( int i = 1; i <= n; i++ )
            f >> a,
            inserare(1,a);

    print(1);

    return 0;
}