Pagini recente » Cod sursa (job #1874119) | Cod sursa (job #1675355) | Cod sursa (job #1010831) | Cod sursa (job #2806835) | Cod sursa (job #1786216)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
main() {
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
unsigned int n, a, b, c;
cin>>n>>a>>b>>c;
//sqrtN buckets
unsigned int kn = round(sqrt(n))+2;
vector< vector<unsigned int> > t(kn);
//generate vector
unsigned int x = b;
t[x/kn].push_back(x);
for (int i = 1; i<n; i++) {
x = (a * x + b) % c;
t[x/kn].push_back(x);
}
//sort buckets
for (int i = 0; i < t.size(); i++) {
sort(t[i].begin(), t[i].end());
}
//merge vectors
int k = 0;
vector<unsigned int> v;
for (int i = 0; i < t.size(); i++) {
if (t[i].size()) {
for (int j = 0; j < t[i].size(); j++) {
k++;
if (k%10==1) {
v.push_back(t[i][j]);
}
}
}
}
//show
for(int i = 0; i < v.size(); i++) {
cout<<v[i]<<" ";
}
}