Cod sursa(job #2737230)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 4 aprilie 2021 15:54:55
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,h[500100];

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

void down(int nod)
{
    if(2*nod+1<=n && (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<=n && h[2*nod]<h[nod])swap(h[2*nod],h[nod]),down(2*nod);
}

int i,x,t;
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;
}