Cod sursa(job #826730)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 1 decembrie 2012 10:25:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>
#include<cstring>
#define dim 500100

using namespace std;


ifstream f("algsort.in");
ofstream g("algsort.out");


int n,i,k,pu,t;
int Sor[dim],A[dim],Fr[10];
int Max,cnt;

int main () {
	
	f>>n;
	
	for(i=1;i<=n;++i){
		f>>A[i];
		if(Max<A[i])
			Max=A[i];
	}
	int cnt=0;
	while(Max) {
		++cnt;
		Max/=10;
	}
	
	pu=1;
	for(t=1;t<=cnt;++t) {
		memset(Fr,0,sizeof(Fr));
		for(i=1;i<=n;++i)
			Fr[A[i]/pu%10]++;
		for(i=1;i<=9;++i)
			Fr[i]+=Fr[i-1];
		for(i=n;i>=1;--i)
			Sor[Fr[A[i]/pu%10]--]=A[i];
		
		pu*=10;
		for(i=1;i<=n;++i)
			A[i]=Sor[i];
	}
	
	
	for(i=1;i<=n;++i)
		g<<Sor[i]<<"\n";
	
	return  0;
}