Cod sursa(job #1005731)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 5 octombrie 2013 17:15:10
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>
#include<algorithm>
#define NMAX 1000000+5
using namespace std;
int N;
int A[NMAX],B[NMAX],C[NMAX],next[NMAX],colour[NMAX];
int main()
{
    int i,x,y;
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    scanf("%d%d%d%d",&N,&A[1],&B[1],&C[1]);
    next[1]=1;
    for(i=2;i<=N-1;i++)
    {
        A[i]=(1LL*A[i-1]*i)%N;
        B[i]=(1LL*B[i-1]*i)%N;
        C[i]=(1LL*C[i-1]*i)%N;
        next[i]=i;
    }
    for(i=N-1;i>=1;i--)
    {
        x=min(A[i],B[i]);
        y=max(A[i],B[i]);
        while(x<=y)
        {
            for(;x<=y && x!=next[x];x=next[x]);
            if(x<=y) {colour[x]=C[i]; next[x]=y+1; x++;}
        }
    }
    for(i=1;i<=N-1;i++) printf("%d\n",colour[i]);
    return 0;
}