Cod sursa(job #720365)

Utilizator raluca_vacaruVacaru Raluca-Ioana raluca_vacaru Data 22 martie 2012 16:47:21
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <cstring>
using namespace std ;

int n ;
long long a[2][200];
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 ( "%lld ", &a[1][i] );
	fclose (stdin);
	radix();
	freopen ( "algsort.out", "w", stdout );
	for ( i=1; i<=n; ++i )
		printf ( "%lld ", a[ok][i] ) ;
	fclose ( stdout ) ;
	return 0;
}