Cod sursa(job #419570)

Utilizator nandoLicker Nandor nando Data 17 martie 2010 18:19:01
Problema Curcubeu Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>

FILE* fin=fopen("curcubeu.in","r");
FILE* fout=fopen("curcubeu.out","w");

#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))

#define NMAX 1000005

typedef long long int64;

int A[NMAX],B[NMAX],C[NMAX],next[NMAX],col[NMAX],n;

int main(){
	fscanf(fin,"%d %d %d %d",&n,&A[0],&B[0],&C[0]);
	int aux;
	for(int i=1;i<=n;i++){
		A[i]=((int64)A[i-1]*i)%n;
		B[i]=((int64)B[i-1]*i)%n;
		C[i]=((int64)C[i-1]*i)%n;
		next[i]=i+1;
		col[i]=-1;
		if(A[i]>B[i]){
			aux=B[i];B[i]=A[i];A[i]=aux;
		}
	}
	for(int i=n-1;i>=1;i--){
		for(int j=A[i];j<=B[i];){
			if(col[j]==-1){
				col[j]=C[i];
			}
			int jmp=j;
			j=next[j];
			next[jmp]=B[i]+1;
		}
	}
	for(int i=1;i<=n-1;i++){
		fprintf(fout,"%d\n",col[i]);
	}
	fclose(fin);
	fclose(fout);
	return 0;
}