Cod sursa(job #1243951)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 16 octombrie 2014 16:59:16
Problema Radix Sort Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <map>
#include <string>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <cmath>
#include <bitset>

using namespace std;

#define e '\n'
#define INF 1023456789
#define ll long long

#define FILE "radixsort"

#ifdef FILE
ifstream f(string (string(FILE) + ".in").c_str());
ofstream g(string (string(FILE) + ".out").c_str());
#endif
#ifndef FILE
#define f cin
#define g cout
#endif

int i, j, n, m, k;
int v[10000005];
int a, b, c;

/**
 * Simple sort
 */

int main() {

	f >> n >> a >> b >> c;

	v[1] = b;
	for (i=2; i<=n; i++) {
		v[i] = (1ll*v[i-1]*a + 1ll*b) % c;
	}

	sort (v+1, v+n+1);

	for (i=1; i<=n; i+=10) {
		g << v[i] << " ";
	}

//	int curr = b;
//	x[curr] = 1;
//
//	int mx = curr;
//
//	for (i=2; i<=n; i++) {
//		curr = (1LL*curr * a + 1LL*b ) % c;
//		x[curr] = 1;
//
//		if (curr > mx) {
//			mx = curr;
//		}
//	}
//
//	for (int i = 0; i <= mx; i++) {
//		if (x[i] == 1) {
//			g << i << " ";
//		}
//	}

	g << e;

	/*

	int position = 0;

	for (int i = 0; i <= mx; i++) {
		if (x[i] == 1) {
			position ++;

			if (position % 10 == 1) {
				g << i << " ";
			}
		}

	}

	g << e;
*/
	return 0;

}