Cod sursa(job #780849)

Utilizator costyrazvyTudor Costin Razvan costyrazvy Data 22 august 2012 11:54:53
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
int h[500003],i,n,k;
void heapup( int i )
{
    if (i*2>1)
        if (h[i] < h[i/2])
        {
            swap( h[i] , h[i/2] );
            heapup( i/2 );
        }
}

void heapdown( int i )
{

    if (i*2<=n)
    {
        if (i*2+1<=n && h[i*2]>h[i*2+1] && h[i]>h[i*2+1]  )
        {
            swap(h[i*2+1],h[i]);
            heapdown( i*2+1 );
        }
        else if (h[i] > h[i*2] )
        {
            swap( h[i] , h[i*2] );
            heapdown( i*2 );
        }
    }
}


int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    f>>n;
    for (i=1; i<=n; i++)
    {
        f>>h[i];
        heapup(i);
    }
    k=n;
    for (i=1; i<k; i++)
    {
     //   g<<h[1]<<" ";
        swap(h[1],h[n]);
        n--;
        heapdown( 1 );

    }
    for(i=k; i>=1; i--) g<<h[i]<<" ";
    f.close();
    g.close();
    return 0;
}