Cod sursa(job #2722639)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 13 martie 2021 09:13:10
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

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

int t,h[500100];

void up(int nod)
{
    if(nod>1 && h[nod/2]>h[nod])
    {
        swap(h[nod/2],h[nod]);
        up(nod/2);
    }
}

void down(int nod)
{
    if(2*nod+1<=t && (h[2*nod]<h[nod] || h[2*nod+1]<h[nod]))
    {
        if(h[2*nod]<=h[2*nod+1])
        {
            swap(h[2*nod],h[nod]);
            down(2*nod);
        }
        else
        {
            swap(h[2*nod+1],h[nod]);
            down(2*nod+1);
        }
    }
    else if(2*nod<=t && h[2*nod]<h[nod])
    {
        swap(h[2*nod],h[nod]);
        down(2*nod);
    }
}

int n,i,x;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>x;
        t++;
        h[t]=x;
        up(t);
    }

    for(i=1;i<=n;i++)
    {
        g<<h[1]<<" ";
        h[1]=INT_MAX;
        down(1);
    }
    return 0;
}