Cod sursa(job #2483710)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 30 octombrie 2019 09:47:00
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <bits/stdc++.h>
#define NMAX 500005
#define ll long long
using namespace std;
ifstream f("algsort.in") ;
ofstream g ("algsort.out") ;
ll N , l = 0 ,  v[2*NMAX] , x;

void down (ll 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[2*p] , v[p]) ;
        down (2*p) ;
    }
}
void up (ll p)
{
    if (p > 1 && v[p] < v[p/2])
    {
        swap(v[p],v[p/2]) ;
        up(p/2);
    }
}
void del (ll p)
{
    swap(v[p] , v[l]);
    l -- ;
    up(p);
    down(p);
}
void add (ll x)
{
    l ++ ;
    v[l] = x;
    up(l);

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

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

        }

    f.close();
    g.close();
    return 0 ;
}