Cod sursa(job #1503326)

Utilizator theprdvtheprdv theprdv Data 15 octombrie 2015 21:58:42
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#define _CRT_SECURE_NO_DEPRECATE
#include <cstdio>
#include <cassert>
#include <cstring>

using namespace std;

#define MAXN 1000002

int N, A[MAXN], B[MAXN], C[MAXN], ans[MAXN], next[MAXN];

int main()
{
	assert(freopen("curcubeu.in", "r", stdin));
	freopen("curcubeu.out", "w", stdout);

	scanf("%d%d%d%d", &N, &A, &B, &C);

	for (int i = 1; i < N; ++i) next[i] = i,
		A[i] = (A[i - 1] * i) % N,
		B[i] = (B[i - 1] * i) % N,
		C[i] = (C[i - 1] * i) % N;
	
	next[N] = N;

	for (int i = N - 1; i; --i) {
		int l = A[i], r = B[i];
		if (l > r) l ^= r ^= l ^= r;

		++r;
		while (r != next[r]) r = next[r];
		
		while (l < r) {
			if (next[l] == l) ans[l] = C[i];
			next[l] = r;
			l = next[l + 1];
		}
	}

	for (int i = 1; i < N; ++i) printf("%d\n", ans[i]);

	return 0;
}