Cod sursa(job #86206)

Utilizator VmanDuta Vlad Vman Data 23 septembrie 2007 20:27:33
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
using namespace std;

#define Nmax 1000001

int N,i,j,d;
long long A[Nmax],B[Nmax],C[Nmax];
int color[Nmax];
int swap[Nmax];

int min(int a,int b) { return a<b?a:b; }
int max(int a,int b) { return a>b?a:b; }

int main()
{
 freopen("curcubeu.in","r",stdin);
 scanf("%d %d %d %d",&N,&A[1],&B[1],&C[1]);
 fclose(stdout);
 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)
     {
      j=min(A[i],B[i]);
      d=max(A[i],B[i]);
      while (j<=d)
            {
             if (color[j]==0) {
                               swap[j]=d+1;
                               color[j++]=C[i];
                              }
                else j=swap[j];
            }
     }
 freopen("curcubeu.out","w",stdout);
 for (i=1;i<N;++i)
     printf("%d\n",color[i]);
 fclose(stdout);
 return 0;
}