Cod sursa(job #915087)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 14 martie 2013 18:39:57
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
#define NMAX 500010

using namespace std;

ifstream f("curcubeu.in");
ofstream g("curcubeu.out");

int n, i, j, preca, precb, precc, a, b, c, culoare[NMAX], urm[NMAX], lim;
long long A, B, C;

struct interval
{
    int st, dr, cul;
}v[NMAX];

int main()
{
    f>>n>>preca>>precb>>precc;

    v[1].st=min(preca, precb); v[1].dr=max(preca, precb); v[1].cul=precc;

    for (i=2; i<n; ++i)
    {
        A=(preca*i)%n;
        B=(precb*i)%n;
        C=(precc*i)%n;

        v[i].st=min(A, B); v[i].dr=max(A, B); v[i].cul=C;

        preca=A; precb=B; precc=C;
    }

    for (i=n-1; i>0; --i)
    {
        j=v[i].st;
        while (j<=v[i].dr)
            if (!urm[j])
            {
                culoare[j]=v[i].cul;
                urm[j]=v[i].dr;
                ++j;
            }
            else j=urm[j]+1;
    }

    for (i=1; i<n; ++i) g<<culoare[i]<<"\n";

    f.close();
    g.close();
    return 0;
}