Pagini recente » Cod sursa (job #161273) | Cod sursa (job #231164) | Cod sursa (job #3128845) | Cod sursa (job #2484269) | Cod sursa (job #881549)
Cod sursa(job #881549)
#include <cstdio>
#include <fstream>
#include <algorithm>
using namespace std;
const int N = 500001;
int A[N];
int n,M;
void READ ()
{
ifstream in ("algsort.in");
in>>n;
for( int i=0 ; i < n ; ++i )
{
in>>A[i];
M=max(M,A[i]);
}
}
void SORT ()
{
int B[N];
for( int X=1 ; M/X ; X*=10 )
{
int b[10]={0};
for( int i=0 ; i < n ; ++i )
++b[A[i]/X%10];
for( int i=1 ; i < 10 ; ++i )
b[i]+=b[i-1];
for( int i=n-1 ; i >= 0 ; --i )
B[--b[A[i]/X%10]]=A[i];
for( int i=0 ; i < n ; ++i )
A[i]=B[i];
}
}
void OUT ()
{
freopen ("algsort.out","w",stdout);
for( int i=0 ; i < n ; ++i )
printf("%d ",A[i]);
}
int main ()
{
READ ();
SORT ();
OUT ();
return 0;
}