Cod sursa(job #658637)

Utilizator maritimCristian Lambru maritim Data 9 ianuarie 2012 11:15:17
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#include<fstream>
using namespace std;

ifstream f("curcubeu.in");
FILE *g = fopen("curcubeu.out","w");

#define MaxN 1000100

int N,A,B,C,auxA,auxB,k,D[MaxN],cul[MaxN];

int min(void)
{
	return A < B ? A : B;
}

int max(void)
{
	return A > B ? A : B;
}

int main()
{
	f >> N >> A >> B >> C;
	
	for(int i=1;i<=N;i++)
		D[i] = i+1;
	
	for(int i=1;i<N;i++)
	{
		A = (1LL*A*i)%N;
		B = (1LL*B*i)%N;
		C = (1LL*C*i)%N;
		
		auxB = max();
		
		for(auxA = min();auxA<=auxB;)
			!cul[auxA] ? (cul[auxA] = C, k = D[auxA], D[auxA] = auxB+1, auxA = k) : auxA = D[auxA];
	}
	
	for(int i=1;i<N;i++)
		fprintf(g,"%d\n",cul[i]);
	
	return 0;	
}