Cod sursa(job #809497)

Utilizator NicuCJNicu B. NicuCJ Data 8 noiembrie 2012 16:38:42
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;
int n, a[500001], rez[500001], s[11], c[11];
int i, p;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int main()
{
    cin>>n;
    for(i=0; i<n; i++)
    {
        cin>>a[i];
    }
    for(p=1; p<=2e10; p*=10)
    {
        bool ok=false;
        for(i=1; i<=n; i++)
        {
            if(a[i]>=p)
                ok=true;
        }
        if(!ok)
            break;
        for(i=-1; i<=9; i++)
        {
            c[i]=0;
            s[i]=0;
        }
        for(i=0; i<n; i++)
        {
            c[(a[i]/p)%10]++;
        }
        for(i=0; i<=9; i++)
        {
            s[i]=s[i-1]+c[i];
        }
        for(i=0; i<n; i++)
        {
            rez[s[(a[i]/p)%10-1]]=a[i];
            s[(a[i]/p)%10-1]++;
        }
        for(i=0; i<n; i++)
        {
            a[i]=rez[i];
        }
    }
    for(i=0; i<n; i++)
        cout<<a[i]<<" ";
}