Cod sursa(job #251693)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 3 februarie 2009 08:34:23
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>

using namespace std;

int N;
int A[1000004],B[1000004],C[1000004];
int T[1000004],val[1000004];

void citire()
{

    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    scanf("%d %d %d %d",&N,&A[1],&B[1],&C[1]);
    T[1]=2;
    for(int i=2;i<N;++i)
    {
        T[i]=i+1;
        A[i]=((A[i-1]%N)*(i%N))%N;
        B[i]=((B[i-1]%N)*(i%N))%N;
        C[i]=((C[i-1]%N)*(i%N))%N;
    }
}


void solve()
{
    int poz,aux;
    for(int i=N-1;i;--i)
    {
        if (B[i]<A[i])
        {
             aux=B[i];
             B[i]=A[i];
             A[i]=aux;
        }
        poz=A[i];
        while(poz<=B[i])
        {
            if(val[poz]==0)
                val[poz]=C[i];
            aux=T[poz];
            T[poz]=B[i]+1;
            poz=aux;
        }
    }
}

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

int main()
{
    citire();
    solve();
    afish();
    return 0;
}