Mai intai trebuie sa te autentifici.

Cod sursa(job #1061041)

Utilizator medeea0507Medeea Lazea medeea0507 Data 19 decembrie 2013 08:31:57
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
long long v[500000],n,nh;
void RH(int i)
{
    int l,r,max;
    l=2*i;
    r=2*i+1;
    max=i;
    if (l<=nh && v[l]>v[i])
        max=l;
    if (r<=nh && v[r]>v[max])
        max=r;
    if (max!=i)
    {
        swap(v[i],v[max]);
        RH(max);
    }
}

void CH()
{
    int i;
    nh=n;
    for (i=n/2;i>=1;i--)
        RH(i);
}

void HS()
{
    int i;
    CH();
    for (i=n;i>=2;i--)
    {
        swap(v[1],v[i]);
        nh--;
        RH(1);
    }
}

int main()
{
    int i;
    fin>>n;
    nh=n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    HS();
    for (i=1;i<=n;i++)
        fout<<v[i]<<" ";
    return 0;
}