Cod sursa(job #1077017)

Utilizator thewildnathNathan Wildenberg thewildnath Data 10 ianuarie 2014 20:09:47
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>

#define NMAX 1000010

int n;
int cul[NMAX],a[NMAX],b[NMAX],c[NMAX],next[NMAX];

int main()
{
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    int i,j,aux;
    scanf("%d%d%d%d",&n,&a[1],&b[1],&c[1]);--n;
    for(i=2;i<=n;++i)
    {
        a[i]=(a[i-1]*i)%(n+1);
        b[i]=(b[i-1]*i)%(n+1);
        c[i]=(c[i-1]*i)%(n+1);
        if(a[i]>b[i])
        {
            aux=a[i];
            a[i]=b[i];
            b[i]=aux;
        }
    }

    for(i=n;i>=1;--i)
    {
        for(j=a[i];j<=b[i];++j)
        {
            if(!cul[j])
            {
                cul[j]=c[i];
                next[i]=b[i]+1;
            }
            else
                j=next[j]-1;
        }
    }

    for(i=1;i<=n;++i)
        printf("%d\n",cul[i]);

    return 0;
}