Cod sursa(job #826715)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 1 decembrie 2012 10:11:03
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
#include<string.h>
#define DIM 500010

using namespace std;

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

int maxim,i,n,nr,k,putere=1;
int Fr[11],V[DIM],Z[DIM];

int main(){
	
	f>>n;
	for(i=1;i<=n;i++){
		f>>V[i];
		if(V[i]>maxim)
			maxim=V[i];
	}
	
	while(maxim!=0){
		nr++;
		maxim/=10;
	}
	
	for(k=1;k<=nr;k++){
		putere*=10;
		memset(Fr,0,sizeof(Fr));
		for(i=1;i<=n;i++)
			Fr[V[i]%putere/(putere/10)]++;
		for(i=1;i<=9;i++)
			Fr[i]+=Fr[i-1];
		for(i=n;i>=1;i--)
			Z[Fr[V[i]%putere/(putere/10)]--]=V[i];
		memcpy(V,Z,sizeof(V));
	}
	
	for(i=1;i<=n;i++)
		g<<V[i]<<" ";
	
	return 0;
}