Cod sursa(job #2125341)

Utilizator epermesterNagy Edward epermester Data 8 februarie 2018 13:13:13
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream>
#include<deque>
using namespace std;
int main() {
	ifstream in("radixsort.in");
	int N,A,B,C;
	in >> N >> A >> B >> C;

	long long *v = new long long[N];
	v[0] = B;
	for (int i = 1;i < N;++i)
		v[i] = ((A * v[i - 1]) % C + B) % C;
	
	int tiz = 1;
	deque<long long> q[10];
	for ( ; C ; C/=10, tiz *= 10) {
		for (int i = 0;i < N;++i)
			q[(v[i] % (tiz * 10)) / tiz].push_back(v[i]);
		int k = 0;
		for (int i = 0;i <= 9;++i)
			while (!q[i].empty()) {
				v[k] = q[i].front();
				q[i].pop_front();
				k++;
			}
	}
	
	ofstream out("radixsort.out");
	for (int i = 0;i < N;i+=10)
		out << v[i] << " ";
}