Cod sursa(job #2999951)

Utilizator NiffSniffCojocaru Calin Marcu NiffSniff Data 11 martie 2023 19:14:59
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 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,fd;
    do
    {
        p = bun;
        fs = 2*p, fd = 2*p+1;
        if (fd <= nh && h[p] > h[fd])
        {
            bun = fd;
            swap(h[p],h[fd]);
        }
        else if (fs <= nh && h[p] > h[fs])
        {
            bun = fs;
            swap(h[p],h[fs]);
        }
    }while (bun != p);
}
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);

    }
    for (int i=1; i<=nh; i++)
            cout << i << ' ';
}