Pagini recente » Cod sursa (job #1873785) | Cod sursa (job #2954896) | Cod sursa (job #3261807) | Cod sursa (job #26162) | Cod sursa (job #2390506)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
int n, a, b, c, cif, nr, maxim, v[10000005], f[300], aux[10000005];
long long p;
int main()
{
int i, j, k;
fin >> 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)
fout << v[i] << ' ';
return 0;
}