Cod sursa(job #515016)

Utilizator LgregL Greg Lgreg Data 20 decembrie 2010 09:02:52
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>

int l[505050],put[15],v[15],N,ver[505050];


void sort(int k)
{
    if(k>=11)
    return;
    if(k>1)
    put[k]=put[k-1]*10;
    for(int i=0;i<=10;++i)
        v[i]=0;
    v[0]=1;
    for(int i=1;i<=N;++i)
    {
    v[(l[i]/put[k])%10+1]++;
    }
    for(int i=1;i<=10;++i)
        v[i]=v[i-1]+v[i];
    for(int i=1;i<=N;++i)
    {
        ver[v[(l[i]/put[k])%10]]=l[i];
        ++v[(l[i]/put[k])%10];
    }
    for(int i=1;i<=N;++i)
       l[i]=ver[i];

sort(k+1);
}

int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&N);
    for(int i=1;i<=N;++i)
        scanf("%d",&l[i]);
    put[1]=1;
    sort(1);
    for(int i=1;i<=N;++i)
        printf("%d ",l[i]);
}