Pagini recente » Cod sursa (job #1809972) | Cod sursa (job #1144116) | Cod sursa (job #3192037) | Cod sursa (job #1706168) | Cod sursa (job #2619525)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n, a, b, c, i, aux[10000005], v[10000005];
void countsort(int v1[], int v2[], const int& p)
{
int i, fr[260];
for(i = 0; i < 256; i++)
fr[i] = 0;
for(i = 0; i < n; i++)
fr[(v1[i] >> p) & 255]++;
for(i = 1; i < 256; i++)
fr[i] += fr[i - 1];
for(i = n - 1; i >= 0; i--)
v2[--fr[(v1[i] >> p) & 255]] = v1[i];
}
void radixsort()
{
int i;
for(i = 0; i < 4; i++)
if(i & 1)
countsort(aux, v, i * 8);
else
countsort(v, aux, i * 8);
}
int main()
{
f >> n >> a >> b >> c;
f.close();
v[0] = b;
for(i = 1; i < n; i++)
v[i] = (1LL* a * v[i - 1] + b) % c;
radixsort();
for(i = 0; i < n; i += 10)
g << v[i] << ' ';
g << '\n';
g.close();
return 0;
}