Pagini recente » Cod sursa (job #3124244) | Cod sursa (job #720574)
Cod sursa(job #720574)
#include <cstdio>
#include <cstring>
using namespace std ;
int n ;
long long a[2][500000] ;
bool ok = 1 ;
void radix ( ) {
int i, p=1, r;
int nr[10], v[10] ;
while ( v[0] < n ) {
//calculam vectorul nr
memset ( nr, 0, 10*sizeof(int) ) ;
for ( i=1; i<=n; ++i )
++nr[a[ok][i]/p%10] ;
//calucam vectorul v
memset ( v, 0, 10*sizeof(int) ) ;
v[0]=1;
for ( i=1; i<10; ++i )
v[i] = nr[i-1]+v[i-1] ;
//aranjam elementele
for ( i=1; i<=n; ++i) {
r = a[ok][i]/p%10;
a[!ok][v[r]++] = a[ok][i];
}
p *= 10;
ok = !ok;
}
}
int main() {
freopen ( "algsort.in", "r", stdin );
scanf ( "%d", &n );
int i;
for ( i=1; i<=n; ++i )
scanf ( "%I64d ", &a[1][i] );
fclose (stdin);
radix();
freopen ( "algsort.out", "w", stdout );
for ( i=1; i<n; ++i )
printf ( "%I64d ", a[ok][i] ) ;
printf ( "%I64d", a[ok][n] ) ;
printf ( "\n" ) ;
fclose ( stdout ) ;
return 0;
}