Cod sursa(job #825401)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 29 noiembrie 2012 08:12:47
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define  INF ((1<<30) + (1<<29))
#define NMAX ((1<<20) + (1<<19))

using namespace std;

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

inline int _min(int a,int b){if(a<b)return a;return b;}

int V[NMAX],N;

inline void Init()
{
       for(int i = 0;i<NMAX;i++)
               V[i] = INF;
}

void Update(int p)
{
     V[p] = _min(V[p*2],V[p*2+1]);
     if(p)   Update(p/2);
}

void Insert(int p,int val)
{
     V[p] = val;
     Update(p/2);
}

int Erase(int val,int p)
{
    if(V[2*p] == val)
                      Erase(val,2*p);
    if(V[2*p+1] == val)
                      Erase(val,2*p+1);
    V[p] = _min(V[2*p+1],V[2*p]);
}

int main ()
{
    int i,x;
    in>>N;
    for(i=1,Init();i<=N;i++)
                     in>>x,Insert(i+N-1,x);

    for(i=1;i<=N;out<<V[1]<<' ',i++,Erase(V[1],1));
    return 0;
}