Pagini recente » Cod sursa (job #453284) | Cod sursa (job #2374980)
#include<bits/stdc++.h>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n, a, b, c;
int gr1[10000002], gr2[10000002];
bool gr[10000002];
int main()
{
f >> n >> a >> b >> c;
gr1[1] = b;
for(int i = 2; i <= n; ++i)
{
long long z = (1LL * a * gr1[i-1] + b) % c;
gr1[i] = z;
}
gr[n+1] = 1;
for(int i = 30; i >= 0; --i)
{
int st = 1;
int np = 0;
while(st <= n)
{
int dr = st;
while(!gr[dr+1])
++dr;
for(int j = st; j <= dr; ++j)
if(!(gr1[j] & (1<<i)))
gr2[++np] = gr1[j];
gr[np+1] = 1;
for(int j = st; j <= dr; ++j)
if((gr1[j] & (1<<i)))
gr2[++np] = gr1[j];
st = dr + 1;
}
for(int j = 1; j <= n; ++j)
gr1[j] = gr2[j];
}
for(int j = 1; j <= n; j += 10)
g << gr1[j] << " ";
return 0;
}