Pagini recente » Cod sursa (job #2325007) | Cod sursa (job #2195925) | Cod sursa (job #545652) | Cod sursa (job #3157292) | Cod sursa (job #1116829)
#include <fstream>
using namespace std;
const int d[] = {0, 8, 16, 24};
int v[10000005], vv[10000005];
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--) {
vv[fr[(v[i]>>d[p]) & mask]]=v[i];
fr[(v[i]>>d[p]) & mask]--;
}
for (i=1;i<=n;i++)
v[i]=vv[i];
}
for(i=1;i<=n;i+=10)
g<<v[i]<<" ";
return 0;
}