Cod sursa(job #712679)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 13 martie 2012 18:27:34
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<cstdio>
#include<cstring>

using namespace std;

int x,j,mx,n,p,a[500011],b[500011],i,cif,c[11];

void rad (int cif)
{
    for (i=1;i<=cif;i++)
    {
        memset(c,0,sizeof(c));
        for (j=1;j<=n;j++)
        {
            c[a[j]/p%10+1]++;
        }
        c[0]=0;
        for (j=1;j<=10;j++)
        {
            c[j]+=c[j-1];
        }
        for (j=1;j<=n;j++)
        {
            b[c[a[j]/p%10]+1]=a[j];
            c[a[j]/p%10]++;
        }
        for (j=1;j<=n;j++)
            a[j]=b[j];
        p*=10;
    }
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        if (a[i]>mx)
            mx=a[i];
    }
    x=0;
    while (mx>0)
    {
        x++;
        mx/=10;
    }
    p=1;
    rad(x);
    for(i=1;i<=n;i++)
        printf("%d ",a[i]);
}