Cod sursa(job #1080831)

Utilizator mads2194FMI - Andrei Stroe mads2194 Data 12 ianuarie 2014 22:29:22
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#include <queue>

#define N 500000

using namespace std;

unsigned int n;
long long int v[N];

queue <long long int> q[10];

int getdigit(long long int x,int digit)
{

    return digit;
}

void lsd()
{
    int k=1;
    bool run=1;

    int i,x;
    while(run)
    {
        run=0;

        i=0;
        while(i<n)
        {
            x=v[i++];
            q[ (x/k)%10 ].push(x);
        }
        k*=10;

        int pos=0;
        for(i=0;i<10;++i)
        {
            while(!q[i].empty())
            {
                v[pos++]=q[i].front();
                q[i].pop();
                if(i>0) run=1;
            }
        }
    }
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);

    scanf("%d",&n);

    for(size_t i=0;i<n;++i)
        scanf("%d",&v[i]);

    lsd();

    for(size_t i=0;i<n;++i)
        printf("%d ",v[i]);

    return 0;
}