Cod sursa(job #322986)

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

#define SMAX 500000

long v[SMAX], n, i, j, k, l, nr, nrmax;
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);
		nr = v[i];
		j = 0;
		while(nr){
			nr /= 10;
			j++;
		}
		if(j > nrmax)
			nrmax = j;
	}
	
	for(i = 0; i < nrmax; ++i){
		for(j=0;j<10;++j)
			vf[j] = 0;
		for(j=0;j<n;++j){
			nr = v[j];
			for(k=0;k<i && nr;++k)
				nr /= 10;
			nr %= 10;
			Q[nr][vf[nr]++] = v[j];
		}
		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;
}