Cod sursa(job #2999958)

Utilizator NiffSniffCojocaru Calin Marcu NiffSniff Data 11 martie 2023 19:26:59
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;
string file = "algsort";
ifstream cin(file +".in");
ofstream cout(file +".out");
int h[500001], nh;

void urca(int p)
{
    while (p>1 && h[p/2] > h[p])
    {
        swap(h[p/2],h[p]);
        p /= 2;
    }
}

void coboara(int p)
{
    int bun = p,fs = 2*p,fd=2*p+1;
    if (fs <= nh && h[fs] < h[bun])
        bun = fs;
    if (fd <= nh && h[fd] < h[bun])
        bun = fd;
    if (bun != p)
    {
        swap (h[bun],h[p]);
        coboara(bun);
    }
}
void adauga(int val)
{
    h[++nh] = val;
    int p = nh;
    urca(p);
}

void sterge (int p)
{
    h[p] = h[nh--];
    urca(p);
    coboara(p);

}
int main()
{
    int n, x;
    cin >> n;
    for (int i=1; i<=n; i++)
    {
        cin >> x;
        adauga(x);
    }
    while (nh)
    {
        cout << h[1] << ' ';
        sterge(1);
    }
}