Pagini recente » Cod sursa (job #720428) | Cod sursa (job #96006) | Cod sursa (job #1996202) | Cod sursa (job #561866) | Cod sursa (job #1317856)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
#define MAXN 10000001
#define MOD 215000
struct nod {
long val;
nod *leg;
nod(long v) {
val = v;
leg = NULL;
}
};
typedef nod* pnod;
long n;
long long cur, a, b, c;
long V[MAXN];
pnod B[257];
pnod sf[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;
}
pnod last;
for(c = 0; c<=24; c = c + 8) {
for(i=1; i<=n; i++) {
nr = (V[i] >> c) & ( (1<<8) - 1 );
if(B[nr] == NULL) {
B[nr] = new nod(V[i]);
sf[nr] = B[nr];
continue;
}
sf[nr] -> leg = new nod(V[i]);
sf[nr] = sf[nr] -> leg;
}
ind = 0;
last = NULL;
for(i=0; i<256; i++) {
for(pnod p=B[i]; p; last = p,p = p->leg, delete last) {
V[++ind] = p->val;
}
B[i] = NULL;
sf[i] = NULL;
}
}
for(long i=1; i<=n; i+=10) {
fout<<V[i]<<" ";
}
}