Cod sursa(job #1011616)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 17 octombrie 2013 00:41:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
//radix sort
#include<fstream>
#include<cstring>

#define dim 500008

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");
int b[dim],Sor[dim],C[dim];
int cnt,Max,k,put,n,i;

int main () {

    f>>n;

    for(i=1;i<=n;++i){
        f>>b[i];

        if(b[i]>Max)
            Max=b[i];
    }

    while(Max){
        ++cnt;
        Max/=10;
    }
    put=1;
    for(k=1;k<=cnt;++k) {

        memset(C,0,sizeof(C));

        for(i=1;i<=n;++i){

            C[b[i]/put%10]++;
        }

        for(i=1;i<=9;++i){
            C[i]+=C[i-1];
        }
        for(i=n;i;--i) {
            Sor[C[b[i]/put%10]--]=b[i];
        }
        for(i=1;i<=n;++i){
            b[i]=Sor[i];
        }
        put*=10;
    }
    for(i=1;i<=n;++i)
        g<<Sor[i]<<" ";
    return 0;

}