Pagini recente » Cod sursa (job #2293943) | Cod sursa (job #1546246) | Cod sursa (job #2454853) | Cod sursa (job #497316) | Cod sursa (job #1167942)
#include <fstream>
#include <algorithm>
using namespace std;
const int Nmax = 10000005;
int a[Nmax];
void mysort(int begin, int end, int k)
{
if (k < 4)
{
sort(a +begin +1, a +end);
return;
}
int zero = begin, one = end, tmp;
while (zero + 1 < one)
{
zero++;
if (a[zero] & (1 << k))
swap(a[zero--], a[--one]);
}
if (begin < zero) mysort(begin, zero+1, k-1);
if (one < end) mysort(one-1, end, k-1);
}
int main()
{
ifstream f ("radixsort.in");
ofstream g ("radixsort.out");
int N, A, B, C;
f >> N >> A >> B >> C;
int x = B;
for (int i = 0; i < N; i++)
{
a[i] = x;
x = (1ll * A * x + B) % C;
}
mysort(-1, N, 31);
for (int i = 0; i < N; i++)
if (i % 10 == 0)
g << a[i] << ' ';
g << '\n';
return 0;
}