Cod sursa(job #2368203)

Utilizator KemyKoTeo Virghi KemyKo Data 5 martie 2019 14:33:13
Problema Radix Sort Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cmath>

using namespace std;

ifstream f("radixsort.in");
ofstream g("radixsort.out");

int n, a, b, c;
queue  <int> q[256];
vector <int> v;

int main()
{
    int e = 0, p = 1, w;
    int i, j;
    f >> n >> a >> b >> c;

    v.push_back(0);
    v.push_back(b);
    for(i=2; i<=n; ++i)
        v.push_back( (1LL * a * v[i - 1] + b) % c );

    for(j=0; j<=24; j+=8){
        for(i=1; i<=n; ++i)
            q[(v[i]>>j) & 255].push(v[i]);

        e = 0;
        for(w=0; w<=255 && e<n; ++w)
            while(!q[w].empty()){
                v[++e] = q[w].front();
                q[w].pop();
            }
    }

    for(i=1; i<=n; i+=10)
        g << v[i] << ' ';

    return 0;
}