Cod sursa(job #515018)

Utilizator LgregL Greg Lgreg Data 20 decembrie 2010 09:15:22
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
using namespace std;
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()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>N;
    for(int i=1;i<=N;++i)
        fin>>l[0][i];
    put[1]=1;
    sort(1);
    for(int i=1;i<=N;++i)
        fout<<l[0][i]<<" ";
}