Cod sursa(job #2652971)

Utilizator alexradu04Radu Alexandru alexradu04 Data 26 septembrie 2020 15:46:43
Problema Curcubeu Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>

using namespace std;

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

struct event
{
    int left, right;
    int color;
};

int n;
int a, b, c;
int color[1000000], skip[1000000];
event e[1000000];

int main()
{
    f >> n >> a >> b >> c;

    e[1] = {min(a, b), max(a, b), c};
    skip[1] = 1;

    for (int i=2; i<n; i++)
    {
        a = (1LL * a * i) % n;
        b = (1LL * b * i) % n;
        c = (1LL * c * i) % n;
        e[i] = {min(a, b), max(a, b), c};
        skip[i] = i;
    }

    for (int i=n-1; i>=1; i--)
        for (int j=e[i].left; j<=e[i].right; j++)
            if (color[j])
                j = skip[j];
            else
            {
                color[j] = e[i].color;
                skip[j] = e[i].right;
            }

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

    return 0;
}