Cod sursa(job #1256467)

Utilizator toniobFMI - Barbalau Antonio toniob Data 6 noiembrie 2014 12:45:43
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
# include <fstream>
# include <list>

using namespace std;

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


int n , v [ 500001 ] , maximum = - 1 << 30 ;

void radix (  ) {

    list < int > rlist [ 10 ] ;

    for ( int p = 1 ; p <= maximum ; p *= 10 ) {

        for ( int i = 1 ; i <= n ; ++ i ) {
            rlist [ ( v [ i ] / p ) % 10 ] . push_back ( v [ i ] ) ;
        }

        for ( int c = 0 , i = 1 ; c <= 9 ; rlist [ c ++ ] . clear (  ) ) {
            for ( list < int > :: iterator j = rlist [ c ] . begin (  ) ; j != rlist [ c ] . end (  ) ; v [ i ++ ] = * ( j ++ ) ) ;
        }

    }

}

int main() {

    in >> n ;
    for ( int i = 1 ; i <= n ; i ++ ) {
        in >> v [ i ] ;
        maximum = maximum > v [ i ] ? maximum : v [ i ] ;
    }

    radix (  ) ;

    for ( int i = 1 ; i <= n ; out << v [ i ++ ] << " " ) ;


    return 0;
}