Cod sursa(job #2294846)

Utilizator dianamichesaRosu Diana Michesa dianamichesa Data 2 decembrie 2018 21:11:05
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int N = 500001;
int n, v[N], a[N][10], 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[++ cnt[cif]][cif] = v[i];
    }
    for(int  c = 0; c <= 9; c ++) {
        for(int  i = 1; i <= cnt[c]; i ++)
            v[++ x] = a[i][c];
        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;
}