Cod sursa(job #203796)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 19 august 2008 16:32:34
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>

#define FIN "curcubeu.in"
#define FOUT "curcubeu.out"

#define min(a,b) a<b ? a:b
#define max(a,b) a>b ? a:b

#define LL long long
#define N_MAX 1010000

int N;
int sol[N_MAX];
int s[N_MAX];
LL A[N_MAX];
LL B[N_MAX];
LL C[N_MAX];
int minim,maxim;

int main()
{
int i;

freopen(FIN,"rt",stdin);

scanf("%d %d %d %d", &N, &A[1], &B[1], &C[1]);

for (i=2;i<N;++i)
     {
      A[i]=(A[i-1]*i)%N;
      B[i]=(B[i-1]*i)%N;
      C[i]=(C[i-1]*i)%N;
      }
for (i=N-1;i>0;--i)
    {
    minim=min(A[i],B[i]);
    maxim=max(A[i],B[i]);
    while (minim<=maxim)
	  {
	  if (sol[minim]==0)
	      {
	       s[minim]=maxim+1;
	       sol[minim++]=C[i];
	       }
	      else
	      minim=s[minim];
	   }
     }
freopen(FOUT,"wt",stdout);
for (i=1;i<N;++i)
    printf("%d\n", sol[i]);
return 0;
}