Cod sursa(job #826742)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 1 decembrie 2012 10:33:34
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <algorithm>
#define DIM 500010
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, i, a[DIM], b[DIM], v[10], nr, k, j, maxim, nc;

int cifre(int n) {
	int s = 0;
	while (n) {
		s ++;
		n /= 10;
	}
	return s;
}

int main(){
	f>>n;
	for(i=1; i<=n; i++) {
		f>>a[i];
		maxim = max(a[i], maxim);
	}
	f.close();
	
	
	nc = cifre(maxim);
	
	nr=1;
	for(i=1; i<=nc; i++)
	{
		for(j=0; j<10; j++)
			v[j]=0;
		for(j=1; j<=n; j++)
			v[ (a[j]/nr)%10 ]++;
		for(j=1; j<10; j++)
			v[j]+=v[j-1];

		for(j=n; j>0; j--)
			b[ v[ (a[j]/nr)%10 ]-- ]=a[j];
		for(j=1; j<=n; j++)
			a[j]=b[j];
		nr=nr*10;
	}
	for(i=1; i<=n; i++)
		g<<a[i]<<' ';
	g<<"\n";
	g.close();
	return 0;
}