Pagini recente » Cod sursa (job #1123257) | Cod sursa (job #2908039) | Cod sursa (job #2703672) | Cod sursa (job #1394656) | Cod sursa (job #1279316)
#include <fstream>
#include <cstring>
#include <vector>
#define dim 10000002
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int v[dim],w[dim];
int n,i,a,b,c,f[256];
short d[]={0,8,16,24},it,mask;
int main(){
fin>>n>>a>>b>>c;
v[1]=b;
for(i=1;i<=n;i++){
v[i]=((1LL*a*v[i-1]+b)%c);
}
for(it=0;it<4;it++){
mask=0xff;
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
f[(v[i]>>d[it])&mask]++;
for(i=1;i<=mask;i++)
f[i]+=f[i-1];
for(i=n;i>=1;i--){
w[f[(v[i]>>d[it])&mask]--]=v[i];
}
for(i=1;i<=n;i++)
v[i]=w[i];
}
for(i=1;i<=n;i+=10)
fout<<v[i]<<" ";
fin.close();fout.close();
return 0;
}