Cod sursa(job #563794)

Utilizator rootsroots1 roots Data 25 martie 2011 23:03:46
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>

#define Dim 1000001

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

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

	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]*(long long)i)%N;
		B[i]=((long long)B[i-1]*(long long)i)%N;
		C[i]=((long long)C[i-1]*(long long)i)%N;
	}

	for(i=1;i<N;i++)
		if(A[i]>B[i])
		{
			aux=A[i];
			A[i]=B[i];
			B[i]=aux;
		}

	for(i=0;i<N;i++)
	{
		T[i]=i-1;
		color[i]=0;
	}

	for(i=N-1;i>0;i--)
	{
		pos=B[i];
		while(pos>=A[i])
		{
			if(color[pos]==0) color[pos]=C[i];
			aux=pos;
			pos=T[pos];
			T[aux]=A[i]-1;
		}
	}

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

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

	return 0;
}