Cod sursa(job #2381622)

Utilizator YetoAdrian Tonica Yeto Data 17 martie 2019 11:02:00
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;
int n, i, h[500005], k;
void dHeap (int poz)
{
    while (poz*2<=k) {
        int st=2*poz;
        if (h[st]<h[st+1] && st+1<=k)
            st=st+1;
        if (h[poz]<h[st]) {
            swap(h[st], h[poz]);
            poz=st;
        }else
            break;
    }
}

int main () {
    ifstream fin ("algsort.in");
    ofstream fout ("algsort.out");
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>h[i];
    }
    k=n;
    for (i=n/2;i>=1;i--) {
        dHeap(i);
    }
    for (i=1;i<n;i++) {
        swap(h[1], h[k]);
        k--;
        dHeap(1);
    }
    for (i=1;i<=n;i++) {
        fout<<h[i]<<" ";
    }
    return 0;
}