Cod sursa(job #2626746)

Utilizator vasileefrosVasile Efros vasileefros Data 7 iunie 2020 21:14:42
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, n;
int a[500010];

void heapifydown(int i) {
    int mx = i;
    if (2*i <= N && a[2*i]>a[mx]) mx=2*i;
    if (2*i+1<=N && a[2*i+1]>a[mx]) mx=2*i+1;

    if (mx!=i) {
        swap(a[i], a[mx]);
        heapifydown(mx);
    }
}

void pop() {
    swap(a[1], a[N]);
    N--;
    heapifydown(1);
}

int main() {
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
    cin>>n;
    for (int i=1; i<=n; i++) cin>>a[i];
    N=n;
    for (int i=n/2; i>=1; i--) {
        heapifydown(i);
    }

    for (int i=n; i>=1; i--) {
        pop();
    }

    for (int i=1; i<=n; i++) cout<<a[i]<<" ";


    return 0;
}