Cod sursa(job #1866306)

Utilizator xtreme77Patrick Sava xtreme77 Data 2 februarie 2017 20:49:25
Problema Radix Sort Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std ;

const int MAX = 1e7 + 14 ;
const int MOD = ( 1 << 8 ) + 14 ;

vector < int > buck [MOD] ; 
int v [MAX] ;

ifstream fin ("radixsort.in") ;
ofstream fout ("radixsort.out") ;

int main ()
{
	int n , a , b , c ; 
	fin >> n >> a >> b >> c ; 
	v [1] = b ; 
	for ( int i = 2 ; i <= n ; ++ i ) {
		v [i] = (1LL * v [i-1] * a + 1LL * b) % c ;
	}
	for ( int i = 0 ; i < 32 ; i += 8 ) {
		int sz = 0 ; 
		for ( int j = 1 ; j <= n ; ++ j ) {
			buck [ ((v[j] >> i) & 255) ].push_back (v[j]) ;
		}
		for ( int j = 0 ; j <= 256 ; ++ j ) {
			for ( auto x : buck[j] ) {
				v [++sz] = x ; 
			}
			buck [j].clear() ;
		}
	}
	for ( int i = 1 ; i <= n ; i += 10 ) {
		fout << v [i] << ' ' ; 
	}
	return 0 ; 
}