Cod sursa(job #2343020)

Utilizator flibiaVisanu Cristian flibia Data 13 februarie 2019 17:00:07
Problema Radix Sort Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#pragma GCC optimize("03")
#include <bits/stdc++.h>
#define ui unsigned int

using namespace std;

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

int n;
ui a, b, c, v[10000100], tp;
vector <ui> w[256];

int main() {
	in >> n >> a >> b >> c;
	v[1] = b;
	for (int i = 2; i <= n; i++)
		v[i] = (a * v[i - 1] + b) % c;
	for (int os = 0; os < 4; os++) {
		for (int i = 1; i <= n; i++)
			w[(v[i] >> (8 * os)) & 255].push_back(v[i]);
		tp = 0;
		for (int i = 0; i < 256; i++) {
			for (auto j : w[i])
				v[++tp] = j;
			w[i].clear();
		}
	}
	for (int i = 1; i <= n; i += 10)
		out << v[i] << ' ';
	return 0;
}