Cod sursa(job #1342382)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 13 februarie 2015 22:13:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>

using namespace std;

#define IN_FILE "algsort.in"
#define OUT_FILE "algsort.out"
#define MAX_N 500005

int v[ MAX_N ];
void qsort( int left, int right ) {
    if( left >= right )
        return ;
    int i = left;
    int j = right;
    int p = v[ rand( ) % ( right - left + 1 ) + left ];
    while( i <= j ) {
        while( v[ i ] < p )
            ++i;
        while( v[ j ] > p )
            --j;
        if( i <= j )
            swap( v[ i++ ], v[ j-- ] );
    }
    qsort( left, i - 1 );
    qsort( i, right );
}
int main( ) {
    FILE *f;
    int N, i;

    f = fopen( IN_FILE, "r" );
    fscanf( f, "%d", &N );
    for( i = 1; i <= N; ++i )
        fscanf( f, "%d", v + i );
    fclose( f );
    srand( time( 0 ) );
    qsort( 1, N );
    f = fopen( OUT_FILE, "w" );
    for( i = 1; i <= N; ++i )
        fprintf( f, "%d ", v[ i ] );
    fclose( f );
    return 0;
}