Pagini recente » Cod sursa (job #850180) | Cod sursa (job #17971) | Cod sursa (job #1978021) | Cod sursa (job #2063) | Cod sursa (job #1785877)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
main() {
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
int n, a, b, c;
cin>>n>>a>>b>>c;
//sqrtN buckets
int kn = round(sqrt(n))+2;
vector< vector<int> > t(kn);
//generate vector
int x = b;
t[x/kn].push_back(x);
for (int i = 1; i<n; i++) {
int 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
vector<int> v;
for (int i = 0; i < t.size(); i++) {
if (t[i].size()) {
v.reserve(t[i].size());
v.insert(v.end(), t[i].begin(), t[i].end());
}
}
//show
for(int i = 0; i < v.size(); i+=10) {
cout<<v[i]<<" ";
}
}