Pagini recente » Cod sursa (job #119488) | Cod sursa (job #2047708) | Cod sursa (job #2313258) | Cod sursa (job #1538835) | Cod sursa (job #1239601)
#include <fstream>
#define DIM 10000011
#define G 4
#define biti 8
#define cif (v[i]>>(p*biti))&(num-1)
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n,A,B,C;
int v[DIM],w[DIM],fr[1<<biti];
int main(void){
register int i,j,p;
long long q;
f>>n>>A>>B>>C;
v[1]=B;
for(i=2;i<=n;i++)
q=(1LL*A*v[i-1]+B)%C,v[i]=(int) q;
int num=1<<biti;
for(p=0;p<G;p++){
for(i=0;i<num;i++) fr[i]=0;
for(i=1;i<=n;i++) fr[cif]++;
for(i=1;i<num;i++) fr[i]+=fr[i-1];
for(i=n;i>0;i--) w[fr[cif]]=v[i],fr[cif]--;
for(i=1;i<=n;i++) v[i]=w[i];
}
for(i=1;i<=n;i+=10) g<<v[i]<<" ";
f.close();
g.close();
return 0;
}