Cod sursa(job #2866857)

Utilizator cyg_vladioanBirsan Vlad cyg_vladioan Data 10 martie 2022 00:46:36
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
const int NMAX = 500000;

std::ifstream f("algsort.in");
std::ofstream g("algsort.out");

int h[NMAX + 5], n;
 
void insert_heap(int x){
    int tata, fiu;
    h[++ n] = x;
    fiu = n;
    while(fiu > 1){
        tata = (fiu >> 1);
        if(h[tata] > h[fiu]){
            int aux = h[tata];
            h[tata] = h[fiu];
            h[fiu] = aux;
        } else break;
        fiu >>= 1;
    }
}

int get_min_heap(){
    return h[1];
}

void delete_heap(){
    int fiu, tata;
    h[1] = h[n];
    n --;
    tata = 1;
    while(tata <= (n >> 1)){
        fiu = (tata << 1);
        if(h[fiu] > h[fiu ^ 1] && (fiu ^ 1) <= n)
            fiu ++;
        if(h[tata] > h[fiu]){
            int aux = h[tata];
            h[tata] = h[fiu];
            h[fiu] = aux;
            tata = fiu;
        } else break;
    }
}

int main(){
    int i, m, x;
    f >> m;
    for(i = 0; i < m; i ++){
        f >> x;
        insert_heap(x);
    }
    for(i = 0; i < m; i ++){
        g << get_min_heap() << " ";
        delete_heap();
    }
}