Cod sursa(job #515017)

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

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


void sort(int k)
{
    int a=(k%2)^1;
    int b=a^1;
    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[a][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)
    {
        l[b][v[(l[a][i]/put[k])%10]]=l[a][i];
        ++v[(l[a][i]/put[k])%10];
    }

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[0][i]);
    put[1]=1;
    sort(1);
    for(int i=1;i<=N;++i)
        printf("%d ",l[0][i]);
}