Cod sursa(job #563598)

Utilizator rootsroots1 roots Data 25 martie 2011 15:38:13
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <string.h>

#define Dim 1000001

int color[Dim],A[Dim],B[Dim],C[Dim];

void swap(int &a,int &b)
{
	int aux;

	if(a>b)
	{
		aux=a;
		a=b;
		b=aux;
	}
}

int main()
{
	int N,i,pos;

	freopen("curcubeu.in","r",stdin);

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

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

	for(i=1;i<N;i++) swap(A[i],B[i]);

	for(i=1;i<N;i++) color[i]=0;

	for(i=N-1;i>0;i--)
	{
		pos=A[i];
		while(color[pos]==0&&pos<=B[i])
		{
			color[pos]=C[i];
			pos++;
		}

		pos=B[i];
		while(color[pos]==0&&pos>=A[i])
		{
			color[pos]=C[i];
			pos--;
		}
	}

	freopen("curcubeu.out","w",stdout);

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

	return 0;
}