Cod sursa(job #2268311)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 24 octombrie 2018 17:54:26
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>// RADIX SORT PENTRU LABORATOR ASD
#include <vector>
#include <queue>
#define NMAX 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[NMAX], i, N, x, ok;
long long p = 1;
queue <int>  Radix[11];
int main() {
    f>>N;
    for (i = 1; i <= N; i++) {
        f>>x;
        Radix[10].push(x);
    }
    ok = 1;
    while (ok) {
        ok = 0;
        while (!Radix[10].empty()) {
            x = Radix[10].front();
            Radix[10].pop();
            if(x > p) ok = 1;
            Radix[(x / p) % 10].push(x);
        }
        p *= 10;
        for (i = 0; i <= 9; i++) {
            while (!Radix[i].empty()) {
                x = Radix[i].front();
                Radix[i].pop();
                Radix[10].push(x);
            }
        }
    }

    while(!Radix[10].empty()) {
        x = Radix[10].front();
        g<<x<<' ';
        Radix[10].pop();
    }
    return 0;
}