Cod sursa(job #2294853)

Utilizator dianamichesaRosu Diana Michesa dianamichesa Data 2 decembrie 2018 21:18:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int N = 500001;
queue <int> a[10];
int n, v[N], cnt[11];
void afisare () {
    for(int  i = 1; i <= n; i ++)
        g << v[i] << ' ';
    g << '\n ';
}
void radixsort (int k) {
    int x = 0;
    for(int i = 1; i <= n; i ++) {
        int cif = (v[i] / k) % 10;
        a[cif].push(v[i]);
        cnt[cif] ++;
    }
    for(int  c = 0; c <= 9; c ++) {
        for(int  i = 0; i < cnt[c]; i ++){
            v[++ x] = a[c].front ();
            a[c].pop();
        }
        cnt[c] = 0;
    }
    if(k <= 1e9)
        radixsort (k * 10);
}
int main()
{
    f >> n;
    for(int  i = 1; i <= n; i ++)
        f >> v[i];
    radixsort (1);
    for(int  i = 1; i <= n; i ++)
        g << v[i] << ' ';
    return 0;
}