Pagini recente » Cod sursa (job #2077404) | Cod sursa (job #221417) | Cod sursa (job #1175119) | Cod sursa (job #636984) | Cod sursa (job #2138020)
#include <fstream>
int N,A,B,C,v[0x989680],w[0x989680],i=1;
void R(int A[],int B[],int d)
{
int f[256]{},p[256];*p=-1;
for(i=N;i;++f[A[--i]>>d&255]);
for(i=0;i^256;p[++i]=p[i-1]+f[i-1]);
for(i=0;i^N;++i)B[++p[A[i]>>d&255]]=A[i];
}
int main()
{
std::ifstream("radixsort.in")>>N>>A>>B>>C;
std::ofstream o("radixsort.out");
for(*v=B;i^N;++i) v[i]=(1ULL*v[i-1]*A+B)%C;
R(v,w,0);R(w,v,8);R(v,w,16);R(w,v,24);
for(i=0;i^N;i+=10) o<<v[i]<<' ';
}