Pagini recente » Cod sursa (job #1697667) | Cod sursa (job #2458689) | Cod sursa (job #2061746) | Cod sursa (job #1699052) | Cod sursa (job #1502285)
#include <fstream>
#define N 10000005
using namespace std;
int n,a,b,c,k,nx[N],u[70],p[70],i,j,v[N],vv[N],nr,NR;
int main()
{
ifstream f("radixsort.in");
ofstream g("radixsort.out");
f>>n>>a>>b>>c;
v[0]=b;
for(i=1;i<n;++i) v[i]=(v[i-1]*a+b)%c;
for(NR=0;NR<6;++NR)
{
for(i=0;i<(1<<6);++i) p[i]=u[i]=-1;
for(i=0;i<n;++i)
{
k=(v[i]>>(6*NR))%(1<<6);
if(p[k]==-1) p[k]=i, u[k]=i;
else nx[u[k]]=i, u[k]=i;
}
nr=-1;
for(i=0;i<(1<<6);++i)
if(u[i]!=-1)
{
for(j=p[i];u[i]!=j;j=nx[j])
vv[++nr]=v[j];
vv[++nr]=v[u[i]];
}
for(i=0;i<n;++i) v[i]=vv[i];
}
for(i=0;i<n;i+=10) g<<v[i]<<'\n';
return 0;
}