Cod sursa(job #2192708)

Utilizator PredaBossPreda Andrei PredaBoss Data 6 aprilie 2018 21:52:07
Problema Radix Sort Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <queue>
#include <cmath>
#define NMAX 10000001

using namespace std;

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

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

int main()
{
    int i, p=1, k, e, j, w, d, o;


    f>>n>>a>>b>>c;
    v[1] = b;
    for(i=2;i<=n;i++)
        v[i] = (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;
}