Cod sursa(job #2467040)

Utilizator dorufDoru Floare doruf Data 3 octombrie 2019 16:43:48
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <algorithm>

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

const int Dim = 1000000 + 5;
int A[Dim], B[Dim], C[Dim];
int CF[Dim], last[Dim];
int n;

int main()
{
	fin >> n >> A[1] >> B[1] >> C[1];

	const int Mod = n--;

	for (int i = 2; i <= n; ++i)
	{
		A[i] = (A[i - 1] * i) % Mod;
		B[i] = (B[i - 1] * i) % Mod;
		C[i] = (C[i - 1] * i) % Mod;
	}

	for (int i = n; i >= 1; --i)
	{
		int st = std::min(A[i], B[i]);
		int dr = std::max(A[i], B[i]);

		for (int j = st; j <= dr; ++j)
		{
			if (!CF[j])
			{
				CF[j] = C[i];
				last[j] = dr;
			}
			else
				j = last[j];
		}
	}

	for (int i = 1; i <= n; ++i)
		fout << CF[i] << '\n';

	fin.close();
	fout.close();

	return 0;
}