Cod sursa(job #2483744)

Utilizator ANDREWQACirstea Andrei Daniel ANDREWQA Data 30 octombrie 2019 10:35:12
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <iostream>

using namespace std;


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

long long n,i,v[500010], l, x;

void up(int p){
    if ( p > 1 && v[p]<v[p/2])
    {
        swap (v[p],v[p/2]);
        up(p/2);
    }
}

void down(int p)
{
     if (2*p+1<=l)
     {
         if (v[2*p]<v[2*p+1] && v[2*p]<v[p])
         {
             swap (v[2*p],v[p]);
             down(2*p);
         }
         else if (v[2*p+1]<v[p])
         {
             swap(v[2*p+1],v[p]);
             down(2*p+1);
         }
     }
     else if (2*p<=l && v[2*p]<v[p])
     {
         swap(v[p],v[2*p]);
         down(2*p);
     }
}


void add (int x)
{
    l++;
    v[l]=x;
    up(l);
}

void del (int p)
{
    swap(v[p], v[l]);
    l -- ;
    up(p);
    down(p);
}


int main()
{   f >> n;
    for ( i = 1; i <= n; i++ ){
        f >> x;
        add(x);
    }


  while (l != 0)
    {
        g << v[1] << ' ';
        del(1) ;

    }
    return 0;
}