Cod sursa(job #1317839)

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

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

#define MAXN 1000001
#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 = 24; c>=0; 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(int i=1; i<=n; i+=10) {
        fout<<V[i]<<" ";
    }

}