Cod sursa(job #1786096)

Utilizator d0rina2011Craciun Dorina d0rina2011 Data 22 octombrie 2016 13:20:24
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#define dmax 10000001
using namespace std;

ifstream fin("radixsort.in");
ofstream fout("radixsort.out");

int n, a, b, c, v[dmax];
int r[11][dmax];
int main()
{
    int i, j, k, nr = 0, vmax, nr_cif = 0, p = 1;
    fin >> n >> a >> b >> c;
    v[1] = b;
    vmax = v[1];
    for (i = 2; i <= n; ++i){
        v[i] = (a * v[i-1] + b) % c;
        if (v[i] > vmax) vmax = v[i];
    }
    while (vmax){
        ++nr_cif;
        vmax /= 10;
    }
    for (i = 1; i <= nr_cif; ++i){
        for (j = 1; j <= n; ++j){
            int x = (v[j]/p)%10;
            r[x][0]++;
            int y = r[x][0];
            r[x][y] = v[j];
        }
        for (j = 0; j<= 9; ++j)
            for (k = 1; k <= r[j][0]; ++k)
                if (r[j][k])
                    v[++nr] = r[j][k];
        p *= 10;
    }
    for (i = 1; i<= n; i+=10)
        fout << v[i] << " ";
    return 0;
}