Cod sursa(job #938712)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 13 aprilie 2013 16:45:52
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX = 1000005;
int i,j,n,A[NMAX],B[NMAX],C[NMAX],Color[NMAX],Next[NMAX],start,finish,poz;
int main()
{
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    scanf("%d%d%d%d",&n,&A[1],&B[1],&C[1]);
    for(i=2;i<n;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;
    }
    for(i=1;i<n;i++) Next[i]=i;
    for(i=n-1;i;i--)
    {
        start=min(A[i],B[i]);
        finish=max(A[i],B[i]);
        for(poz=start;poz<=finish;)
        {
            for(;poz!=Next[poz] && poz<=finish;poz=Next[poz]);
            if(poz>finish) break;
            Color[poz]=C[i];
            Next[poz]=finish+1;
            poz++;
        }
    }
    for(i=1;i<n;i++) printf("%d\n",Color[i]);
    return 0;
}