Cod sursa(job #1034732)

Utilizator morlockRadu Tatomir morlock Data 18 noiembrie 2013 00:37:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 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, b[nmax];

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 )
    {
        int bucket[10] = {0};

        for ( int i=0; i<N; ++i )
            bucket[(v[i]/exp)%10]++;

        for ( int i=1; i<=9; ++i )
            bucket[i] += bucket[i-1];

        for ( int i=N-1; i>=0; --i )
            b[ --bucket[(v[i]/exp)%10] ] = v[i];

        for ( int i=0; i<N; ++i )
            v[i] = b[i];

        exp *= 10;
    }

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