Cod sursa(job #1040679)

Utilizator NitaMihaitavoidcube NitaMihaita Data 24 noiembrie 2013 19:58:47
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#include<cmath>
#define numaru 500001
using namespace std;
int v[numaru],z[numaru],a[20][10];
int n;
ifstream f("algsort.in");
ofstream g("algsort.out");
void sortsort(int p,int d)
{
    int i;
    for(i=1;i<=n;++i) ++a[d][v[i]/p%10];
    for(i=1;i<10;++i) a[d][i]+=a[d][i-1];
    for(i=n;i>=1;--i) z[ a[d][ v[i]/p%10 ]-- ] = v[i];
    for(i=1;i<=n;++i) v[i]=z[i];
}
int main()
{
    int i,_max,p;
    f>>n;
    f>>v[1];
    _max=v[1];
    for(i=2;i<=n;++i)
    {
        f>>v[i];
        if(v[i]>_max)_max=v[i];
    }
    _max=(int)log10(_max)+1;
    for(i=0,p=1;i<_max;++i,p*=10)
    {
        sortsort(p,i);
    }
    for(i=1;i<=n;++i)
        g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
}