Cod sursa(job #2283999)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 16 noiembrie 2018 15:03:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <vector>
using namespace std;


vector < int > radix( vector < int > V ) {

    vector < int > B[ 2 ];
    int n, i, j, k, mask, bac;

    for ( k = 0; k <= 31; ++k ) {

        for ( i = 0; i < V.size(); ++i )
            B[ ( V[ i ] >> k ) & 1 ].push_back( V[ i ] );

        V.erase( V.begin(), V.end() );

        for( i = 0; i <= 1; ++i ) {
            for ( j = 0; j < B[ i ].size(); ++j )
                V.push_back( B[ i ][ j ] );
            B[i].erase( B[ i ].begin(), B[ i ].end());
        }
    }

    return V;

}

int main () {

    freopen( "algsort.in", "r", stdin );
    freopen( "algsort.out", "w", stdout );

    int n, i, j, k, m, mask, bac = 1;
    vector < int > V;


    scanf( "%d", &n );
    for( i = 1; i <= n; ++i ) {
        scanf( "%d", &k );
        V.push_back( k );
    }

    V = radix( V );

    for ( i = 0; i < V.size(); ++i )
        printf( "%d ", V[ i ] );




    return 0;
}