Cod sursa(job #914415)

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


void citire()
{
    for (i=1;i<=n-1;i++)
    {
        v[i].inc=a; v[i].sf=b;
        if (v[i].inc>v[i].sf)
        {   v[i].inc=b; v[i].sf=a;  }
        v[i].c=c;
        a=a*(i+1)%n;    b=b*(i+1)%n;    c=c*(i+1)%n;
    }
}

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

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