Cod sursa(job #942933)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 23 aprilie 2013 21:03:34
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<algorithm>

using namespace std;

ifstream fin("curcubeu.in"); ofstream fout("curcubeu.out");

int n, A[1000100], B[1000100], C[1000100], next[1000100], v[1000100];

int main()
{
    int i, poz, start, finish, color;

    fin >> n >> A[1] >> B[1] >> C[1];

    next[1]=1;

    for(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;
        next[i]=i;
    }

    for(i=n-1;i>0;i--)
    {
        start=A[i];
        finish=B[i];

        if(start>finish)
            swap(start,finish);

        color=C[i];
        poz=start;

        while(poz<=finish)
        {
            while(next[poz]!=poz && poz<=finish)
                poz=next[poz];

            if(poz>finish)
                continue;

            v[poz]=color;

            next[poz]=finish+1;

            poz++;
        }
    }

    for(i=1;i<n;i++)
        fout << v[i] << " ";

    fin.close(); fout.close();
    return 0;
}