Pagini recente » Cod sursa (job #46280) | Cod sursa (job #2403997) | Cod sursa (job #384812) | Cod sursa (job #96777) | Cod sursa (job #1786337)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
typedef unsigned long long int64;
typedef unsigned int uint;
main() {
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
uint n, a, b, c;
cin>>n>>a>>b>>c;
//sqrtN buckets
uint kn = 1;
while ((1<<kn)<=(c>>kn)) kn++;
vector< vector<uint> > t(1<<kn);
//generate vector
uint x = b;
t[x>>kn].push_back(x);
for (uint i = 1; i<n; i++) {
x = (a * (int64)x + b) % c;
t[x>>kn].push_back(x);
}
//sort buckets
for (uint i = 0; i < t.size(); i++) {
sort(t[i].begin(), t[i].end());
}
//show
uint k = 0, tn = t.size();
for (uint i = 0; i < tn; i++) {
if (t[i].size()) {
uint tin = t[i].size();
for (uint j = 0; j < tin; j++) {
k++;
if (k%10==1) {
cout<<t[i][j]<<" ";
}
}
}
}
}