Cod sursa(job #87439)

Utilizator sanaDascalu Laurentiu sana Data 27 septembrie 2007 12:20:18
Problema Curcubeu Scor 20
Compilator c Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#include <stdlib.h>
#define min(A,B) (A)>(B)?(B):(A)
#define max(A,B) (A)<(B)?(B):(A)


int main(){
	long int N,A1,B1,C1,*culoare,i,j,aux1,aux2;
	FILE *fin, *fout;
	fin=fopen("curcubeu.in", "rt");
	fout=fopen("curcubeu.out", "wt");

	fscanf(fin, "%ld %ld %ld %ld", &N, &A1, &B1, &C1);
//	fprintf(fout,"%ld %ld %ld %ld\n",N,A1,B1,C1);
	culoare=(long int *)malloc((N+1)*sizeof(long int));

	for (i=1;i<N;i++)
		culoare[i]=0; //Initial casele sunt necolorate
	aux1=min(A1,B1);
	aux2=max(A1,B1);
	A1=aux1;
	B1=aux2;
	for (i=A1;i<B1+1;i++)
		culoare[i]=C1;

	for (i=1;i<N;i++){
		//Colorez in N-1 pasi
		A1=(A1*i)%N;
		B1=(B1*i)%N;
		C1=(C1*i)%N;
		aux1=min(A1,B1);
		aux2=max(A1,B1);
		A1=aux1;
		B1=aux2;
		for (j=aux1;j<aux2+1;j++)
			culoare[j]=C1;

	}

	//Afisez culorile caselor

	for (i=1;i<N-1;i++)
		fprintf(fout,"%ld\n",culoare[i]);
	fprintf(fout,"%ld",culoare[i]);

	free(culoare);
	fclose(fin);
	fclose(fout);
	return 0;
}