Cod sursa(job #1356224)

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

using namespace std;
typedef int var;

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

#define NO 256

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

void radixsort() {
    for(var pass = 0; pass < 4; pass++) {
        for(var i=0; i<n; i++) {
            var val = V[i] / (1 << (8*pass));
            val = val % (1 << 8);
            B[val].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();
            }
        }
    }
}

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


    radixsort();
    string res;

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

    fout << res;


    return 0;
}