Cod sursa(job #1759928)

Utilizator andreioneaAndrei Onea andreionea Data 20 septembrie 2016 00:05:56
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <vector>

#define INFILE "radixsort.in"
#define OUTFILE "radixsort.out"

using std::vector;
using std::ifstream;
using std::ofstream;

int main()
{
	vector<long> v;
	int n,a,b,c;
	ifstream fin(INFILE);
	ofstream fout(OUTFILE);
	
	fin >> n >> a >> b >> c;
	v.reserve(n);

	for (auto i = 0; i < n; ++i) {
		if (i == 0)
			v.push_back(b);
		else
			v.push_back((v[i-1] * a  + b) % c);
	}
	
	vector<long> zeros;
	vector<long> ones;

	for (auto i = 0; i < 32; ++i) {
		zeros.clear();
		ones.clear();
		for (auto &x : v){
			if (x & (1 << i))
				ones.push_back(x);
			else
				zeros.push_back(x);
		}
		v.clear();
		for (auto &x : zeros)
			v.push_back(x);
		for (auto &x : ones)
			v.push_back(x);
	}
	for (auto i = 0; i < v.size(); i += 10)
		fout << v[i] << " ";
	fin.close();
	fout.close();
	return 0;
}