Pagini recente » Istoria paginii runda/lista2 | Cod sursa (job #1332329) | Istoria paginii runda/testare.creare | Cod sursa (job #1313809) | Cod sursa (job #2900753)
#include <fstream>
using namespace std;
const int DIM = 10000010;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n, a, b, c;
int v[DIM], aux[DIM], f[300];
int cifra(int x, int p) {
return (x >> p) & 255;
}
int main() {
fin >> n >> a >> b >> c;
v[1] = b;
for (int i = 2; i <= n; i++)
v[i] = (1LL * a * v[i - 1] + b) % c;
int p = 0;
for (int t = 1; t <= 4; t++) {
for (int i = 0; i < 256; i++)
f[i] = 0;
for (int i = 1; i <= n; i++)
f[cifra(v[i], p)]++;
for (int i = 1; i < 256; i++)
f[i] += f[i - 1];
for (int i = n; i; i--)
aux[f[cifra(v[i], p)]--] = v[i];
for (int i = 1; i <= n; i++)
v[i] = aux[i];
p += 8;
}
for (int i = 1; i <= n; i += 10)
fout<<v[i]<<" ";
return 0;
}