Cod sursa(job #1524836)

Utilizator cutzulackeDinca Teodora cutzulacke Data 14 noiembrie 2015 14:50:13
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>

using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void max_heap( long long v[], int i, long long n)
{
    int stang, drept, larg, poz;
    stang=2*i;
    drept=(2*i+1);
    if( (stang<=n) and (v[stang]>v[i]) )
    larg=stang;
    else
    larg=i;
    if( (drept<=n) and (v[drept]>v[larg]) )
    larg=drept;
    if( larg!=i)
    {
        poz=v[i];
        v[i]=v[larg];
        v[larg]=poz;
        max_heap( v, larg, n);
    }
}
void constr_max_heap(long long v[], long long n)
{
    int k;
    for( k=n/2; k>=1; k--)
    {
        max_heap( v, k, n);
    }
}
void Heap( long long v[], long long n)
{
    constr_max_heap( v, n);
    int i, tempor;
    for( i=n; i>=2; i--)
    {
        tempor=v[i];
        v[i]=v[1];
        v[1]=tempor;
        max_heap( v, 1, i-1);
    }
}

int main()
{
    long long n, i, v[5000001];
    in>>n;
    for( i=0; i<n; i++)
    {
        in>>v[i];
    }
    Heap( v, n);
    for( i=0; i<n; i++)
    {
        out<<v[i]<<' ';
    }
    return 0;
}