Cod sursa(job #322984)

Utilizator GulyanAlexandru Gulyan Data 10 iunie 2009 15:23:53
Problema Sortare prin comparare Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>

#define SMAX 500000

long v[SMAX], n, i, j, k, l, nr, cont;
long Q[10][SMAX];
long vf[10];

int main()
{
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);
	scanf("%ld", &n);
	for(i = 0; i < n; ++i){
		scanf("%ld", v+i);
	}
	
	for(i = 0; ; ++i){
		for(j=0;j<10;++j)
			vf[j] = 0;
		cont = 0;
		for(j=0;j<n;++j){
			nr = v[j];
			for(k=0;k<i && nr;++k)
				nr /= 10;
			if(nr)
				cont = 1;
			nr %= 10;
			Q[nr][vf[nr]++] = v[j];
		}
		if(cont == 0)
			break;
		l = 0;
		for(j=0;j<10;j++){
			for(k=0;k<vf[j];++k)
				v[l++] = Q[j][k];
		}
	}
	
	for(i=0;i<n;++i)
		printf("%ld ", v[i]);
	
	return 0;
}