Pagini recente » Cod sursa (job #2193383) | Cod sursa (job #3039882) | Cod sursa (job #1294734) | Cod sursa (job #2074220) | Cod sursa (job #2611284)
#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[2][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][0]=B;
for(int i=1;i<n;i++){
v[0][i]=(a*v[0][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;
}
int ic=k%2,ia=1-ic;
for(int i=0;i<n;i++){
int cif=(v[ic][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[ic][i]>>nb)&(b-1);
v[ia][poz[cif]++]=v[ic][i];
}
p*=b;
}
for(int i=0;i<n;i+=10){
cout<<v[0][i]<<" ";
}
return 0;
}