Cod sursa(job #2640029)

Utilizator Ionut_neuer58Raducu Ioan Stefan Ionut_neuer58 Data 4 august 2020 19:04:49
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");

int v[100001], n, n1;

void cinvec()
{
    in>>n;
    n1=n;
    for(int i=1; i<=n; i++) in>>v[i];
}

void coutvec()
{
    for(int i=1; i<=n; i++) out<<v[i]<<' ';
}

void upheap(int nod)
{
    int w=2*nod;
    while(w<=n1)
    {
        if(w+1<=n1 && v[w+1]>v[w]) ++w;
        if(v[nod]>=v[w])
        {
            return;
        }
        swap(v[nod], v[w]);
        nod=w;
        w=2*nod;
    }
}

void heapify()
{
    for(int i=n1/2; i; i--)
        upheap(i);
}

void heapsort()
{
    heapify();
    while(n1)
    {
        swap(v[n1], v[1]);
        --n1;
        upheap(1);
    }
}

int main()
{
    cinvec();
    heapsort();
    coutvec();
    return 0;
}