Cod sursa(job #1588803)

Utilizator DysKodeTurturica Razvan DysKode Data 3 februarie 2016 17:04:38
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

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

int n, v[500001];

void svap( int &a, int &b )
{
    int x = a;
    a = b;
    b = x;
return;
}

int rand()
{
    int x;
    return x;
}

void quicksort( int l, int r )
{
    if( l >= r )
        return;

    int p = rand()%(r-l) + l;
    int z = v[ p ];
    int k = r;

    for( int i = l ; i <= k ; i++ )
    {
        if( v[ i ] > z )
        {
            if( k == p )
                p = i;

            svap( v[ i ] , v[ k-- ] );


            i--;
        }
    }

    if( v[ k ] <= v[ p ] )
        svap( v[ k ] , v[ p ] );
    quicksort( l , k - 1 );
    quicksort( k + 1 , r );
}

int main()
{
    fin>>n;

    for( int i = 1; i <= n ; i++ )
    {
        fin>>v[ i ];
    }

    quicksort( 1 , n );

    for( int i = 1 ; i <= n ; i++ )
    {
        fout<<v[ i ]<<' ';
    }
    return 0;
}