Cod sursa(job #2475714)

Utilizator DawlauAndrei Blahovici Dawlau Data 17 octombrie 2019 14:25:32
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
//#include "pch.h"
#include <fstream>
#include <vector>
#include <stack>
#include <algorithm>

using namespace std;

ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");

class ansType {

	public:
		int color, idx;
};

int main() {

	int n, A1, B1, C1;
	fin >> n >> A1 >> B1 >> C1;

	vector <int> A(n + 2), B(n + 2), C(n + 2), nxt(n + 2);
	vector <ansType> ans(n + 2);
	A[1] = A1;
	B[1] = B1;
	C[1] = C1;

	for (int idx = 2; idx < n; ++idx) {

		A[idx] = (1LL * A[idx - 1] * idx) % n;
		B[idx] = (1LL * B[idx - 1] * idx) % n;
		C[idx] = (1LL * C[idx - 1] * idx) % n;
	}

	for (int idx = n - 1; idx >= 1; --idx) {

		int st = min(A[idx], B[idx]);
		int dr = max(A[idx], B[idx]);
		int color = C[idx];

		nxt[idx] = dr + 1;

		for(int id = st; id <= dr; ++id)
			if (ans[id].idx == 0) {

				ans[id].color = color;
				ans[id].idx = idx;
			}
			else id = nxt[ans[id].idx];
	}

	for (int idx = 1; idx < n; ++idx)
		fout << ans[idx].color << '\n';
}