Pagini recente » Cod sursa (job #76552) | Cod sursa (job #3297537) | Cod sursa (job #3297525)
#include <stdio.h>
#include <vector>
#include <algorithm>
const int BITS = 16;
const int FULL = (1 << BITS) - 1;
int main() {
FILE *fin = fopen( "radixsort.in", "r" );
FILE *fout = fopen( "radixsort.out", "w" );
int n, a, b, c;
fscanf( fin, "%d%d%d%d", &n, &a, &b, &c );
std::vector<int> v(1, b);
for( int i = 1; i < n; i++ )
v.push_back( (a * (long long)v.back() + b) % c );
for( int i = 2; i--; ){
std::vector<std::vector<int>> cacat(1 << BITS);
for( int x : v )
cacat[(x >> (i * BITS)) & (FULL)].push_back( x );
v.clear();
for( auto &vec : cacat )
for( int x : vec )
v.push_back( x );
}
for( int i = 0; i < n; i += 10 )
fprintf( fout, "%d ", v[i] );
fclose( fin );
fclose( fout );
return 0;
}