Cod sursa(job #1676384)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 5 aprilie 2016 21:27:20
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
#include <algorithm>

using namespace std;

const int N=(1e6)+5;

int ans[N],a[N],b[N],c[N],n,Next[N],i;

void coloreaza(int x,int y,int c)
{
    int i;
    for(i=x; i<=y;)
    if(ans[i]) i=Next[i];
    else
    {
        ans[i]=c;
        Next[i]=y+1;
        ++i;
    }
}

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]=(int)(1LL*a[i-1]*i%n);
         b[i]=(int)(1LL*b[i-1]*i%n);
         c[i]=(int)(1LL*c[i-1]*i%n);
    }

    for(i=n-1; i; --i)
    {
         if(a[i]>b[i]) swap(a[i], b[i]);
         coloreaza(a[i], b[i], c[i]);
    }

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

    return 0;
}