Cod sursa(job #515544)

Utilizator LgregL Greg Lgreg Data 21 decembrie 2010 18:08:18
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#define mod10(x) (x-(x/10)*10)
using namespace std;


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


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)
    {
    q=l[i]/put[k];
    v[mod10(q)+1]++;
    }
    for(int i=1;i<=10;++i)
        v[i]=v[i-1]+v[i];
    for(int i=1;i<=N;++i)
    {
        q=l[i]/put[k];
        ver[v[mod10(q)]]=l[i];
        ++v[mod10(q)];
    }
    for(int i=1;i<=N;++i)
       l[i]=ver[i];

sort(k+1);
}

int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>N;
    for(int i=1;i<=N;++i)
        fin>>l[i];
    put[1]=1;
    sort(1);
    for(int i=1;i<=N;++i)
        fout<<l[i]<<" ";
}