Cod sursa(job #2458990)

Utilizator andreioneaAndrei Onea andreionea Data 22 septembrie 2019 05:39:00
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <vector>

int main()
{
    std::ifstream fin("algsort.in");
    std::ofstream fout("algsort.out");
    std::vector<uint32_t> v;
    uint32_t n;
    fin >> n;
    v.reserve(n);
    for (uint32_t i = 0; i < n; ++i) {
        uint32_t x;
        fin >> x;
        v.push_back(x);
    }
    // Make a heap, then use selection sort
    std::make_heap(v.begin(), v.end(), std::greater<uint32_t>());
    for (size_t i = 3; i < v.size(); ++i) {
        uint32_t bubble = v[i];
        uint32_t right = i;
        uint32_t left = right;
        while (v[--left] > v[right])
        {
            v[right--] = v[left];
        }
        v[right] = bubble;
    }
    for (const auto x : v) {
        fout << x << " ";
    }
    return 0;
}