Pagini recente » Cod sursa (job #2579998) | Cod sursa (job #589526) | Cod sursa (job #2718824) | Cod sursa (job #2892911) | Cod sursa (job #2247650)
#include <bits/stdc++.h>
using namespace std;
const int kBuckets = 256;
vector<int> buckets[kBuckets];
void sort_by_bucket(function<int (int)> bucket_of_int, vector<int>& v) {
for (int i = 0; i < kBuckets; i++)
buckets[i].clear();
for (int n : v)
buckets[bucket_of_int(n)].push_back(n);
v.clear();
for (int i = 0; i < kBuckets; i++)
v.insert(v.end(), buckets[i].begin(), buckets[i].end());
}
int main() {
#ifdef INFOARENA
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
#endif
int n, a, b, c;
cin >> n >> a >> b >> c;
vector<int> v;
v.push_back(b);
for (int i = 1; i < n; i++) {
v.push_back((a * v[i - 1] + b) % c);
}
for (int offset = 0; offset < 32; offset += 8) {
sort_by_bucket([offset](int x) { return (x >> offset) & 0xFF; }, v);
}
for (int i = 0; i < n; i += 10) {
cout << v[i] << ' ';
}
cout << '\n';
return 0;
}