Pagini recente » Cod sursa (job #436273) | Cod sursa (job #3145521) | Cod sursa (job #2516811) | Cod sursa (job #2244269) | Cod sursa (job #2609429)
#include <fstream>
using namespace std;
int v[2][10000005], nr[65536], poz[65536];
ifstream cin ( "radixsort.in" );
ofstream cout ( "radixsort.out" );
int main() {
int n, a, b, c, i, k, j, cif, ic, ia, nsh;
cin >> n >> a >> b >> c;
v[0][0] = b;
for( i = 1; i < n; i++ ) {
v[0][i] = ( 1LL * a * v[0][i - 1] + b ) % c;
}
p = 1;
a = 1 << 16;
for (k = 0; k < 2; k++) {
ic = k & 1;
ia = 1 - ic;
nsh = k * 16;
for (j = 0; j < a; j++) {
nr[j] = 0;
}
for (i = 0; i < n; i++) {
nr[(v[ic][i] >> nsh) & (a - 1)]++;
}
poz[0] = 0;
for (j = 1; j < a; j++) {
poz[j] = poz[j-1] + nr[j-1];
}
for (i = 0; i < n; i++) {
cif = (v[ic][i] >> nsh) & (a - 1);
v[ia][poz[cif]++] = v[ic][i];
}
}
for ( i = 0; i < n; i += 10 )
cout << v[0][i] << " ";
return 0;
}