Pagini recente » Cod sursa (job #1703699) | Cod sursa (job #2310535) | Cod sursa (job #2213653) | Cod sursa (job #498131) | Cod sursa (job #2306623)
#include <bits/stdc++.h>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
const int MAX = 1e7 + 5;
int base, n, a, b, c;
int v[MAX], k[MAX], p[257];
inline int rest(int k)
{
return (k >> (8 * base)) & 255;
}
void generare()
{
f >> n >> a >> b >> c;
v[1] = b;
for(int i = 2; i <= n; ++i)
v[i] = (1LL * a * v[i - 1] + b) % c;
}
int main()
{
generare();
while(base < 4)
{
for(int i = 0; i <= 255; ++i)
p[i] = 0;
for(int i = 1; i <= n; ++i)
++p[rest(v[i])];
for(int i = 1; i <= 255; ++i)
p[i] += p[i - 1];
for(int i = n; i >= 1; --i)
k[p[rest(v[i])]--] = v[i];
for(int i = 1; i <= n; ++i)
v[i] = k[i];
++base;
}
for(int i = 1; i <= n; i+=10)
g << v[i] << " ";
return 0;
}