Cod sursa(job #2470393)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 9 octombrie 2019 09:36:04
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
#define N_MAX 1000000
using namespace std;

struct Color
{
    size_t min;
    size_t max;
    size_t id;
} colors[N_MAX + 1];

struct Interval
{
    size_t end = 0;
    size_t id = 0;

} ans[N_MAX + 1];

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

    size_t n, a, b, c;

    fin >> n >> a >> b >> c;

    for(size_t i = 1; i < n; ++i)
    {
        colors[i].min = min(a, b);
        colors[i].max = max(a, b);
        colors[i].id = c;

        a = (a * (i + 1)) % n;
        b = (b * (i + 1)) % n;
        c = (c * (i + 1)) % n;
    }

    for(size_t i = n - 1; i >= 1; --i)
    {

        size_t j;

        for(j = colors[i].min; j <= colors[i].max; ++j)
        {
            if(ans[j].id == 0) ans[j].id = colors[i].id;
            else j = ans[j].end;
        }

        --j;

        for(size_t k = colors[i].min; ans[k].end != j && k <= colors[i].max; ++k )
            ans[k].end = j;

    }

    for(size_t i = 1; i < n; ++i) fout << ans[i].id << '\n';
}