Pagini recente » Cod sursa (job #1180881) | Cod sursa (job #1371443) | Cod sursa (job #1837301) | Cod sursa (job #2029740) | Cod sursa (job #1219440)
#include <fstream>
#define NMAX 10000005
const int d[] = {0, 8, 16, 24};
using namespace std;
int v[NMAX], w[NMAX];
int fr[256];
int n, a, b, c, i, p;
int main() {
ifstream f("radixsort.in");
ofstream g("radixsort.out");
f>>n>>a>>b>>c;
v[1]=b;
for(i=2;i<=n;i++) {
v[i] =(int)((1LL*a*v[i-1]+b)%c);
}
int mask = 255;
for (p = 0; p<=3; p++) {
for (i=0;i<=255;i++)
fr[i]=0;
for (i=1;i<=n;i++)
fr[(v[i]>>d[p]) & mask]++;
for (i=1;i<=255;i++)
fr[i]+=fr[i-1];
for (i=n;i>=1;i--) {
w[fr[(v[i]>>d[p]) & mask]]=v[i];
fr[(v[i]>>d[p]) & mask]--;
}
for (i=1;i<=n;i++)
v[i]=w[i];
}
for(i=1;i<=n;i+=10)
g<<v[i]<<" ";
return 0;
}