Cod sursa(job #659044)

Utilizator informatician28Andrei Dinu informatician28 Data 9 ianuarie 2012 22:33:44
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream> 
#include<stdio.h>
#define NMAX 1000001
using namespace std; 

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

int N, A[NMAX], B[NMAX], C[NMAX], next[NMAX], cul[NMAX]; 

int main() 
{
	int i,j,Aux; 
	
	in >> N >> A[1] >> B[1] >> C[1]; 
	
	for(i = 2; i <= N-1; i++) 
	{
		A[i] = (1LL*i*A[i-1])%N; 
		B[i] = (1LL*i*B[i-1])%N; 
		if(A[i] > B[i]) 
		{
			Aux = A[i]; 
			A[i] = B[i]; 
			B[i] = Aux; 
		}
		C[i] = (1LL*i*C[i-1])%N; 
	}
	
	for(i = N-1; i > 0; --i) 
		for(j = A[i]; j <=B[i]; )
			if(!cul[j]) 
			{
				cul[j] = C[i]; 
				next[j] = B[i] + 1; 
				++j;
			}
			else j = next[j]; 
			
			for(i = 1; i < N; i++) 
				fprintf(g,"%d\n", cul[i]);
}