Cod sursa(job #2465152)

Utilizator iulianarsenoiuArsenoiu Iulian iulianarsenoiu Data 29 septembrie 2019 15:24:56
Problema Heapuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>

using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i,x,h[500005],l;
void HeapUp(int k)
{
    if(k>1)
    {
        int t=k/2;
        if(h[k]<h[t])
        {
            swap(h[k],h[t]);
            HeapUp(t);
        }
    }
}
void HeapDown(int k)
{
    int st=0,dr=0;
    if(2*k<=l)
    {
        st=2*k;
        if(2*k+1<=l)
            dr=2*k+1;
        if(h[st]<h[dr] || dr==0)
        {
            if(h[k]>h[st])
            {
                swap(h[k],h[st]);
                HeapDown(st);
            }
        }
        else if(h[k]>h[dr])
        {
            swap(h[k],h[dr]);
            HeapDown(dr);
        }
    }
}
int main()
{
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>x;
        h[i]=x;
        HeapUp(i);
    }
    l=n;
    for(i=1; i<=n; i++)
    {
        g<<h[1]<<' ';
        h[1]=h[l];
        h[l]=0;
        l--;
        HeapDown(1);
    }
    return 0;
}