Pagini recente » Cod sursa (job #1969841) | Cod sursa (job #2299838) | Cod sursa (job #2534698) | Cod sursa (job #2588874) | Cod sursa (job #2356359)
#include <bits/stdc++.h>
#define RADIX 0xFF
#define bit(x) ((x >> (bite * 8)) & RADIX)
using namespace std;
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");
int n, a, b, c, Max;
long long p;
int v[10000005];
int temp[10000005];
inline void SORT (int A[], int B[], int bite)
{
int cnt[(1 << 8)];
int ord[(1 << 8)];
memset(cnt, 0, sizeof(cnt));
memset(ord, 0, sizeof(ord));
for (int i = 1; i <= n; ++i)
{
++cnt[bit(A[i])];
}
ord[0] = 0;
for (int i = 1; i < (1<<8); ++i)
{
ord[i] = ord[i-1] + cnt[i-1];
}
for (int i = 1; i <= n; ++i)
{
B[++ord[bit(A[i])]] = A[i];
}
}
int main()
{
f >> n >> a >> b >> c;
v[1] = b;
for (int i = 2; i <= n; ++i)
{
v[i] = (1LL * v[i-1] * a + b) % c;
}
int total = sizeof(v[1]);
for (int i = 0; i < total; ++i)
{
if (i % 2 == 0)
SORT(v, temp, i);
else SORT(temp, v, i);
}
for (int i = 1; i <= n; i += 10)
g << v[i] << " ";
return 0;
}