Cod sursa(job #2289711)

Utilizator marian013Giugioiu Marian Constantin marian013 Data 25 noiembrie 2018 02:26:27
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,h[500005];
void heapify(int k,int m)
{
    int nod=1;
    while(nod)
    {
        nod=0;
        if(2*k<m)
        {
            nod=2*k;
            if(2*k+1<=m&&h[2*k+1]>h[2*k])
                nod=2*k+1;
            if(h[k]>h[nod])
                nod=0;
        }
        if(nod){
            swap(h[k],h[nod]);
            k=nod;
        }
    }
}
int main()
{
    int i;
    f>>n;
    for(i=1;i<=n;i++)
        f>>h[i];
    for(i=n/2;i>=1;i--)
        heapify(i,n);
    for(i=n;i>=2;i--)
    {
        swap(h[1],h[i]);
        heapify(1,i-1);
    }
    for(i=1;i<=n;i++)
        g<<h[i]<<" ";
    return 0;
}