Cod sursa(job #881549)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 18 februarie 2013 11:22:06
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb

#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;
	
}