Cod sursa(job #996448)

Utilizator andrettiAndretti Naiden andretti Data 11 septembrie 2013 22:17:02
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
#include<algorithm>
#define maxn 1000005
using namespace std;

int n;
int a[maxn],b[maxn],c[maxn];
int sol[maxn],nxt[maxn];

void read()
{
    scanf("%d%d%d%d",&n,&a[1],&b[1],&c[1]);
    for(int 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;
    }
}

void solve()
{
    for(int i=n-1;i;i--)
    {
        if(a[i]>b[i]) swap(a[i],b[i]);
        for(int j=a[i];j<=b[i];j++)
         if(sol[j]) j=nxt[j];
         else
          sol[j]=c[i],nxt[j]=b[i];
    }
}

void print()
{
    for(int i=1;i<n;i++) printf("%d\n",sol[i]);
}

int main()
{
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);

    read();
    solve();
    print();

    fclose(stdin);
    fclose(stdout);
    return 0;
}