Cod sursa(job #2603228)

Utilizator As932Stanciu Andreea As932 Data 18 aprilie 2020 19:08:53
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");

const int nmax=1000005;

int n,a0,b0,c0,af,bf,cf;

int cells[nmax],range[nmax];

struct r
{
    int x,y,colour;
}v[nmax];

void read()
{
    fin>>n>>a0>>b0>>c0;

    v[1]={min(a0,b0),max(a0,b0),c0};

    for(int i=2;i<n;i++)
    {
        af=(1LL*a0*i)%n;
        bf=(1LL*b0*i)%n;
        cf=(1LL*c0*i)%n;

        v[i]={min(af,bf),max(af,bf),cf};

        a0=af,b0=bf,c0=cf;
    }
}

void solve()
{
    for(int i=n-1;i>=1;i--)
    {
        int x=v[i].x,y=v[i].y;

        for(;x<=y;x++)
            if(!range[x])
            {
                range[x]=y;
                cells[x]=v[i].colour;
            }
            else
                x=range[x];
    }

    for(int i=1;i<n;i++)
        fout<<cells[i]<<"\n";
}

int main()
{
    read();
    solve();

    return 0;
}