Cod sursa(job #914387)

Utilizator lianaliana tucar liana Data 14 martie 2013 08:33:11
Problema Curcubeu Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#define nmax 1000005
struct element{long long a, b, c;};
long i, n, inc, sf, aux, poz, purm;
long urm[nmax], cul[nmax];
element v[nmax];

void citire()
{
    scanf("%ld %ld %ld %ld",&n,&v[1].a,&v[1].b,&v[1].c);
    urm[1]=2;
    for (i=2;i<=n;i++)
    {
        v[i].a=(v[i-1].a*i)%n;
        v[i].b=(v[i-1].b*i)%n;
        v[i].c=(v[i-1].c*i)%n;
        urm[i]=i+1;
    }
}

void rezolvare()
{
    for (i=n-1;i>=1;i--)
    {
        inc=v[i].a; sf=v[i].b;
        if (inc>sf)
        {   aux=inc;    inc=sf; sf=aux; }
        poz=inc;
        while (poz<=sf)
        {
            purm=urm[poz];
            if (urm[poz]<sf+1)
                urm[poz]=sf+1;
            if (cul[poz]==0)
                cul[poz]=v[i].c;
            poz=purm;
        }
    }
}

int main()
{
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    citire();
    rezolvare();
    for (i=1;i<=n-1;i++)
        printf("%ld\n",cul[i]);
    return 0;
}