Cod sursa(job #2912155)

Utilizator biancalautaruBianca Lautaru biancalautaru Data 7 iulie 2022 09:16:33
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda 17_iulie Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,i,nr,h[500001];

void downHeap(int k) {
    while (2*k<=nr) {
        int p=2*k;
        if (p+1<=nr && h[p+1]>h[p])
            p++;
        if (h[p]>h[k]) {
            swap(h[p],h[k]);
            k=p;
        }
        else
            break;
    }
}

void buildHeap() {
    nr=n;
    for (int i=n/2;i>=1;i--)
        downHeap(i);
}

int main() {
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>h[i];
    nr=n;
    for (i=n/2;i>=1;i--)
        downHeap(i);
    for (i=n;i>=1;i--) {
        swap(h[1],h[i]);
        nr--;
        downHeap(1);
    }
    for (i=1;i<=n;i++)
        fout<<h[i]<<" ";
    return 0;
}