Pagini recente » Istoria paginii runda/sasasas/clasament | Cod sursa (job #536040) | Cod sursa (job #911042) | Cod sursa (job #2871753) | Cod sursa (job #2057962)
#include <bits/stdc++.h>
using namespace std;
ifstream fi("radixsort.in");
ofstream fo("radixsort.out");
int v[10000000], w[10000000], x[256];
int main() {
int n, a, c; fi >> n >> a >> v[0] >> c;
for (int i = 1; i < n; ++i) v[i] = (1LL * a * v[i - 1] + v[0]) % c;
for (int b = 0; b < 32; b += 8) {
memset(x, 0, sizeof x);
for (int i = 0; i < n; ++i) ++x[v[i] >> b & 255];
for (int i = 1; i < 256; ++i) x[i] += x[i - 1];
for (int i = n - 1; i >= 0; --i) w[--x[v[i] >> b & 255]] = v[i];
swap(v, w);
}
for (int i = 0; i < n; i += 10) fo << v[i] << ' ';
}