Pagini recente » Cod sursa (job #753176) | Cod sursa (job #219412) | Cod sursa (job #538724) | Cod sursa (job #3138447) | Cod sursa (job #1979319)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
queue <unsigned int> Buck[260];
unsigned int A,B,C,N,V[10000005];
int main()
{
fin>>N>>A>>B>>C;
V[1]=B;
for(int i=2;i<=N;++i)
{
V[i]=1LL*((A*V[i-1])%C+B%C)%C;
}
for(int i=1;i<=4;i++)
{
int shift=(i-1)*8;
int dest=0;
for(int j=1;j<=N;j++)
{
dest = (V[j]>>shift)&255;
Buck[dest].push(V[j]);
}
int k=0,l=0;
while(k<N)
{
while(Buck[l].empty())
++l;
while(!Buck[l].empty())
{
V[++k]=Buck[l].front();
Buck[l].pop();
}
}
}
for(int i=1;i<=N;i+=10)
fout<<V[i]<<" ";
fout<<"\n";
return 0;
}