Cod sursa(job #1011268)

Utilizator The_DisturbedBungiu Alexandru The_Disturbed Data 16 octombrie 2013 17:28:16
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#include<stdlib.h>
struct point
{
	int x;
	point *y;
}*r[10],*p;
int n,i,j,x,mx,nr,v[500013],k;
int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%d",&n);
	mx=-1;
	for(i=0;i<n;++i)
	{
		scanf("%d",&v[i]);
		x=v[i];
		nr=0;
		while(x!=0)x/=10,++nr;
		if(nr>mx)mx=nr;
	}
	for(j=0,nr=1;j<mx;++j,nr*=10)
	{
		for(i=n-1;i>=0;--i)
		{
			x=(v[i]/nr)%10;
			p=new point;
			p->x=v[i];
			p->y=r[x];
			r[x]=p;
		}
		for(i=k=0;i<10;++i)
			while(r[i]!=NULL)
			{
				v[k++]=r[i]->x;
				p=r[i];
				r[i]=r[i]->y;
				delete(p);
			}
	for(i=0;i<n;++i)printf("%d ",v[i]);
	printf("\n");
	}
	return 0;
}