Cod sursa(job #1034661)

Utilizator morlockRadu Tatomir morlock Data 17 noiembrie 2013 23:17:18
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#define nmax 500005
#include <queue>
#include <fstream>
using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");


int N, v[nmax], M, exp=1, k=0;
queue<int> q[9];

int main()
{
    in >> N;
    for ( int i = 0; i<N; ++i )
        in >> v[i];

    M = v[0];
    for ( int i=1; i<N; ++i )
        if ( v[i] > M ) M = v[i];

    while ( M / exp > 0 )
    {
        k = 0;
        for ( int i=0; i<N; ++i )
            q[ (v[i] / exp) % 10 ].push(v[i]);

        for ( int i=0; i<=9; ++i )
            while ( !q[i].empty() )
            {
                v[k++] = q[i].front();
                q[i].pop();
            }

        exp *= 10;
    }

    for ( int i=0; i<N; ++i )
        out << v[i] << " ";
}