Pagini recente » Cod sursa (job #116538) | Cod sursa (job #1991571) | Cod sursa (job #2463728) | Cod sursa (job #1449804) | Cod sursa (job #2609440)
#include <stdio.h>
int v[2][10000001], nr[65536], poz[65536];
int main() {
FILE *fin, *fout;
fin = fopen ( "radixsort.in", "r" );
fout = fopen( "radixsort.out", "w" );
int n, a, b, c, i, k, j, cif, ia, nsh;
fscanf ( fin, "%d%d%d%d", &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;
}
for (k = 0; k < 2; k++) {
ia = 1 - k;
nsh = k * 16;
for (j = 0; j < 65536; j++) {
nr[j] = 0;
}
for (i = 0; i < n; i++) {
nr[(v[k][i] >> nsh) & 65535]++;
}
poz[0] = 0;
for (j = 1; j < 65536; j++) {
poz[j] = poz[j-1] + nr[j-1];
}
for (i = 0; i < n; i++) {
cif = (v[k][i] >> nsh) & 65535;
v[ia][poz[cif]++] = v[k][i];
}
}
for ( i = 0; i < n; i += 10 )
fprintf( fout, "%d ", v[0][i] );
return 0;
}