Pagini recente » Cod sursa (job #2209550) | Cod sursa (job #1106884) | Cod sursa (job #1453508) | Cod sursa (job #2137468) | Cod sursa (job #2611250)
#include <fstream>
using namespace std;
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
const int NB=16;
const int b=1<<NB;
const int nc=2;
int v[10000005], poz[b+5], nr[b+5], aux[10000005];
int main()
{
int p=1, nc=4;
int n;
long long a,B,c;
cin>>n>>a>>B>>c;
v[0]=B;
for(int i=1;i<n;i++){
v[i]=(a*v[i-1]+B)%c;
}
for(int k=0;k<nc;k++){
int nb=k*NB;
for (int j=0;j<b;j++){
nr[j]=0;
}
for(int i=0;i<n;i++){
int cif=(v[i]>>nb)&(b-1);
nr[cif]++;
}
poz[0]=0;
for(int j=1;j<b;j++){
poz[j]=poz[j-1]+nr[j-1];
}
for(int i=0;i<n;i++){
int cif=(v[i]>>nb)&(b-1);
aux[poz[cif]++]=v[i];
}
for(int i=0;i<n;i++){
v[i]=aux[i];
}
p*=b;
}
for(int i=0;i<n;i+=10){
cout<<v[i]<<" ";
}
return 0;
}