Cod sursa(job #648570)

Utilizator Catah15Catalin Haidau Catah15 Data 13 decembrie 2011 18:42:52
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <algorithm>

using namespace std;

#define maxN 1000002

int A[maxN], B[maxN], C[maxN], next[maxN], col[maxN];

int main()
{
	freopen ("curcubeu.in", "r", stdin);
	freopen ("curcubeu.out", "w", stdout);
	
	int N;
	
	scanf ("%d %d %d %d", &N, &A[1], &B[1], &C[1]);
	
	if (A[1] > B[1])
	{
		int aux = A[1];
		A[1] = B[1];
		B[1] = aux;
	}
	
	for (int i = 2; i < N; ++ i)
	{
		A[i] = (A[i - 1] * 1LL * i) % N;
		B[i] = (B[i - 1] * 1LL * i) % N;
		C[i] = (C[i - 1] * 1LL * i) % N; 
		
		if (A[i] > B[i])
		{
			int aux = A[i];
			A[i] = B[i];
			B[i] = aux;
		}
	}
	
	for (int t = N - 1; t > 0; -- t)
		for (int i = A[t]; i <= B[t]; )
			if (col[i]) i = next[col[i]] + 1;
			else
			{
				col[i] = C[t];
				next[col[i]] = i;
				++ i;
			}
	
	for (int i = 1; i < N; ++ i) printf ("%d\n", col[i]);
	
	return 0;
}