Pagini recente » Cod sursa (job #1939847) | Cod sursa (job #2850097) | Cod sursa (job #2433917) | Cod sursa (job #1880488) | Cod sursa (job #2282967)
#include <fstream>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
const int N=10000000+5;
const int MOD=(1<<16);
int n;
int a,b,c;
int v[N],aux[N];
int f[MOD];
int main() {
fin>>n>>a>>b>>c;
v[1]=b;
for(int i=2;i<=n;i++) {
v[i]=(1LL*v[i-1]*a+b)%c;
}
for(int p=0;p<32;p+=16) {
for(int i=0;i<MOD;i++) f[i]=0;
for(int i=1;i<=n;i++) f[(v[i]>>p)%MOD]++;
for(int i=1;i<MOD;i++) f[i]+=f[i-1];
for(int i=n;i>=1;i--) aux[f[(v[i]>>p)%MOD]--]=v[i];
for(int i=1;i<=n;i++) v[i]=aux[i];
}
for(int i=1;i<=n;i+=10) {
fout<<v[i]<<" ";
}
fout<<"\n";
return 0;
}