Pagini recente » Cod sursa (job #2985470) | Cod sursa (job #1063212) | Cod sursa (job #1273627) | Cod sursa (job #1678394) | Cod sursa (job #2390504)
#include <fstream>
#include <cstring>
using namespace std;
FILE * fin=fopen("radixsort.in","r");
FILE * fout=fopen("radixsort.out","w");
int n, a, b, c, cif, nr, maxim, v[10000005], f[300], aux[10000005];
long long p;
int main()
{
int i, j, k;
fscanf(fin,"%d %d %d %d",&n,&a,&b,&c);
v[1] = b;
for (i=2;i<=n;i++)
v[i] = (1ll*a*v[i-1]+b)%c;
p = 1;
for (k=0;k<4;k++)
{
p<<=8;
memset(f,0,sizeof(f));
for (i=1;i<=n;i++)
{
cif = v[i]&(p-1);
cif >>= (8*k);
f[cif+1]++;
}
for (i=1;i<(1<<8);i++)
f[i]+=f[i-1];
memset(aux,0,sizeof(aux));
for (i=1;i<=n;i++)
{
cif = v[i]&(p-1);
cif >>= (8*k);
aux[++f[cif]] = v[i];
}
memcpy(v,aux,sizeof(aux));
}
for (i=1;i<=n;i+=10)
fprintf(fout,"%d ",v[i]);
return 0;
}