Pagini recente » Cod sursa (job #1251534) | Cod sursa (job #575862) | Cod sursa (job #2559067) | Cod sursa (job #920209) | Cod sursa (job #2306310)
#include <cstdio>
#include <cstring>
#include <fstream>
#define nmax 10000005
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int v[nmax], k[nmax];
int n, a, b, c , p[(1<<16)];
int base;
inline int rest(const int &e)
{
return (e>>(base*16))&((1<<16)-1);
}
int main()
{
int i;
f>>n>>a>>b>>c;
v[1] = b;
for (i = 2; i<= n; i++)
v[i] = (a* v[i-1]+b) %c;
base = 0;
while (base <=1) {
memset(p, 0, sizeof(p));
for (i = 1; i <= n; i++)
p[rest(v[i])]++;
for (i = 1; i < (1<<16); i++)
p[i] += p[i-1];
for (i = 1; i <= n; i++)
k[p[rest(v[i])]--]=v[i];
for (i=1;i<=n;i++)
v[i]=k[i];
base++;
}
for (i = 1; i<=n ; i+=10)
g << v[i] <<' ';
return 0;
}