Pagini recente » Cod sursa (job #2783729) | Cod sursa (job #1411796) | Cod sursa (job #2956622) | Cod sursa (job #2970415) | Cod sursa (job #2557337)
#include <fstream>
#include <vector>
#include <cstring>
#define Nmax 10000001
using namespace std;
int n,a,b,c,v[Nmax],v1[Nmax],poz[258],max1,p,k,val;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int main()
{
int i,j;
fin>>n>>a>>b>>c;
v[1]=b;
max1=v[1];
for (i=2;i<=n;i++)
{
v[i]=(a*1LL*v[i-1]+b)%c;
max1=max(max1,v[i]);
}
while (max1)
{
k++;
max1/=256;
}
for (i=1;i<=k;i++)
{
for (j=1;j<=n;j++)
{
val=(v[j]>>p);
val=(val&255);
poz[val]++;
}
for (j=1;j<=255;j++)
{
poz[j]+=poz[j-1];
}
for (j=n;j>=1;j--)
{
val=(v[j]>>p);
val=(val&255);
v1[poz[val]]=v[j];
poz[val]--;
}
for (j=1;j<=n;j++)
{
v[j]=v1[j];
}
for(j=0;j<=256;j++)poz[j]=0;
p+=8;
}
for (i=1;i<=n;i+=10)
{
fout<<v[i]<<" ";
}
return 0;
}