Cod sursa(job #514022)

Utilizator SpiderManSimoiu Robert SpiderMan Data 17 decembrie 2010 16:26:45
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
# include <cstdio>

const char *FIN = "algsort.in", *FOU = "algsort.out";
int V[500005], N ;

void swap ( int &A, int &B ) {
    int aux = A ;
    A = B ;
    B = aux ;
}

void sorteaza ( int *V, int i, int j ) {
    if ( V[i] > V[j] )
        swap ( V[i], V[j] ) ;
    if ( i + 1 >= j )
        return ;
    int k = ( j - i + 1 ) / 3 ;
    sorteaza ( V, i, j - k ) ;
    sorteaza ( V, i + k, j ) ;
    sorteaza ( V, i, j - k ) ;
}

int main ( void ) {
    freopen ( FIN, "r", stdin ) ;
    freopen ( FOU, "w", stdout ) ;

    scanf ( "%d", &N ) ;

    for ( int i = 1; i <= N; ++i )
        scanf( "%d", V + i ) ;

    sorteaza ( V, 1, N ) ;

    for ( int i = 1; i <= N; ++i )
        printf( "%d ", V[i] );
}