Cod sursa(job #1356185)

Utilizator retrogradLucian Bicsi retrograd Data 23 februarie 2015 11:36:28
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#include<queue>

using namespace std;
typedef int var;

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

#define NO 65536

queue<var> B[NO];
var V[10000002];
var n;

void radixsort() {
    for(var i=0; i<n; i++) {
        B[V[i]%NO].push(V[i]);
    }
    var ind = 0;
    for(var i=0; i<NO; i++) {
        while(!B[i].empty()) {
            V[ind++] = B[i].front();
            B[i].pop();
        }
    }

    for(var i=0; i<n; i++) {
        B[V[i]/NO].push(V[i]);
    }
    ind = 0;
    for(var i=0; i<NO; i++) {
        while(!B[i].empty()) {
            V[ind++] = B[i].front();
            B[i].pop();
        }
    }

}

int main() {
    var a, b, c;
    fin>>n>>a>>b>>c;
    V[0] = b;
    for(var i=1; i<n; i++) {
        V[i] = (a*V[i-1] + b)%c;
    }


    radixsort();

    for(var i=0; i<n; i+=10) {
        fout<<V[i]<<" ";
    }


    return 0;
}