Pagini recente » Cod sursa (job #1111815) | Cod sursa (job #2395521) | Cod sursa (job #2702288) | Cod sursa (job #1364021) | Cod sursa (job #514181)
Cod sursa(job #514181)
# include <cstdio>
# include <cstring>
# include <algorithm>
const int MAX = 500001 ;
int N ;
int A[MAX], B[MAX] ;
inline void rad ( int N, int byte, int *A, int *B ) {
int cnt[1024], C[1024] = { 1 } ;
memset ( cnt, 0, sizeof cnt ) ;
for ( int i = 1; i <= N; ++i )
++cnt[ A[i] >> byte & 1023 ] ;
for ( int i = 1; i < 1024; ++i )
C[i] = C[i - 1] + cnt[i - 1] ;
for ( int i = 1; i <= N; ++i )
B[ C[ A[i] >> byte & 1023 ]++ ] = A[i] ;
}
inline void radix ( int *A, int N ) {
rad ( N, 0, A, B ) ;
rad ( N, 10, B, A ) ;
rad ( N, 20, A, B ) ;
rad ( N, 30, B, A ) ;
}
int main ( void ) {
freopen ( "algsort.in", "r", stdin ) ;
freopen ( "algsort.out", "w", stdout ) ;
scanf ( "%d", &N ) ;
for ( int i = 1; i <= N; ++i )
scanf ( "%d", A + i ) ;
radix ( A, N ) ;
for ( int i = 1; i <= N; ++i )
printf ( "%d ", A[i] ) ;
}