Pagini recente » Cod sursa (job #711169) | Cod sursa (job #423920) | Cod sursa (job #2568123) | Cod sursa (job #330958) | Cod sursa (job #2673301)
#include <iostream>
#include <fstream>
using namespace std;
const int MAXN = 10000005;
int n;
int v[MAXN], sorted[MAXN], bucket[1 << 17];
void radixSort(int bucketsize, int nrbuc) {
int mask = (1 << 16) - 1, lim = 1 << 16;
for (int i = 0; i < lim; ++i) {
bucket[i] = 0;
}
for (int i = 1; i <= n; ++i) {
int pos = (v[i] >> (bucketsize * nrbuc)) & mask;
bucket[pos]++;
}
for (int i = 1; i < lim; ++i) {
bucket[i] += bucket[i - 1];
}
for (int i = n; i >= 1; --i) {
int pos = (v[i] >> (bucketsize * nrbuc)) & mask;
sorted[bucket[pos]] = v[i];
bucket[pos]--;
}
for (int i = 1; i <= n; ++i) {
v[i] = sorted[i];
}
}
int main()
{
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
ios::sync_with_stdio(false);
fout.tie(nullptr);
int a, b, c;
fin >> n >> a >> b >> c;
v[1] = b;
for (int i = 2; i <= n; ++i) {
int val = static_cast<int>((1LL * a * v[i - 1] + b) % c);
v[i] = val;
}
for (int i = 0; i <= 1; ++i) {
radixSort(16, i);
}
for (int i = 1; i <= n; i += 10) {
fout << v[i] << " ";
}
return 0;
}