Cod sursa(job #919206)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 19 martie 2013 14:53:22
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<cstdio>
#define NMax 1000005
using namespace std;
 
struct trpl { int a,b,c; };
trpl v[NMax];
int nxt[NMax],cl[NMax];
 
void swap (int &a, int &b)
{
    int aux=a;
    a=b, b=aux;
}
 
int main ()
{
    int i,j,n;
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    scanf("%d%d%d%d",&n,&v[1].a,&v[1].b,&v[1].c);
    if (v[1].a>v[1].b)
        swap(v[1].a,v[1].b);
    for (i=2; i<n; i++)
    {
        v[i].a=((long long)v[i-1].a*i)%n;
        v[i].b=((long long)v[i-1].b*i)%n;
        v[i].c=((long long)v[i-1].c*i)%n;
        if (v[i].a>v[i].b)
            swap(v[i].a,v[i].b);
    }
    for (i=n-1; i>=1; i--)
        for (j=v[i].a; j<=v[i].b; j++)
            if (!nxt[j])
                cl[j]=v[i].c, nxt[j]=v[i].b;
            else j=nxt[j];
    for (i=1; i<n; i++)
        printf("%d\n",cl[i]);
    return 0;
}