Cod sursa(job #1317847)

Utilizator retrogradLucian Bicsi retrograd Data 15 ianuarie 2015 11:47:52
Problema Radix Sort Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;

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

#define MAXN 10000001
#define MOD 215000


long n;
long long cur, a, b, c;
long V[MAXN];
vector<long> B[257];
vector<long>::iterator it;

int main() {

    long i, nr, ind;
    fin>>n>>a>>b>>c;
    cur = b;
    for(i=1; i<=n; i++, cur = (cur*a+b)%c) {
        V[i] = cur;
    }
    for(c = 0; c<=24; c = c + 8) {
        for(i=1; i<=n; i++) {
            nr = (V[i] >> c) & ( (1<<8) - 1 );
            B[nr].push_back(V[i]);
        }
        ind = 0;
        for(i=0; i<256; i++) {
            for(it = B[i].begin(); it!=B[i].end(); ++it) {
                V[++ind] = *it;
            }
            B[i].clear();
        }

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

}