Cod sursa(job #826725)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 1 decembrie 2012 10:17:24
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <queue>
using namespace std;

ifstream fi ("algsort.in");
ofstream fo ("algsort.out");

const int dim = 500005;
int N, NRC, A[dim], B[dim], F[10];


void cit ()
{
	fi >> N;
	for (int i = 1; i <= N; i++)
	{
		fi >> A[i];
		A[0] = max (A[i], A[0]);
	}
	while (A[0])
	{
		NRC++;
		A[0] /= 10;
	}
}

void rez ()
{
	int c, i, pz = 1;
	for (c = 1; c <= NRC; c++, pz *= 10)
	{
		for (i = 0; i <= 9; i++) F[i] = 0;
		for (i = 1; i <= N; i++)
			F[ (B[i] = A[i]) / pz % 10 ] ++;
		for (i = 0; i <= 9; i++) F[i] += F[i-1];
		for (i = N; i >= 1; i--)
			A[ F[ B[i] / pz % 10 ] -- ] = B[i];		
	}
}

void afi ()
{
	for (int i = 1; i <= N; i++)
		fo << A[i] << ' ';
}

int main ()
{
	cit ();
	rez ();
	afi ();
	return 0;
}