Pagini recente » Cod sursa (job #1881832) | Cod sursa (job #153575) | Cod sursa (job #96871) | Cod sursa (job #1735617) | Cod sursa (job #1979322)
#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*((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;
}