Cod sursa(job #1612160)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 24 februarie 2016 18:52:39
Problema Radix Sort Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <array>
using namespace std;

void do_sort(vector<int>& v){
	const int n = v.size();
	array<vector<int>, 256> buf;
	for(int niv = 0; niv < 32; niv += 8){
		for(int i = 0; i < n; ++i){
			buf[v[i] >> niv].push_back(v[i]); }
		auto it = begin(v);

		for(int i = 0; i < 256; ++i){
			it = copy(begin(buf[i]), end(buf[i]), it);
			buf[i].clear(); } } }

int main(){
	ifstream f("radixsort.in");
	ofstream g("radixsort.out");

	int n;
	long long a, b, c;
	f >> n >> a >> b >> c;

	vector<int> v(n);

	long long cur = b;
	for(int i = 0; i < n; ++i){
		v[i] = cur;
		cur = (a * cur + b) % c; }

	do_sort(v);

	for(int i = 0; i < n; i += 10){
		g << v[i] << ' '; }

	return 0; }