Cod sursa(job #3348209)

Utilizator unomMirel Costel unom Data 20 martie 2026 10:57:03
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <iostream>

using namespace std;

struct operatie
{
    int st, dr, val;
};

ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
int N, a, b, c;
int n;
operatie op[1000005];
int tata[1000005];
int cul[1000005];

int rad(int x)
{
    if(x == tata[x])
    {
        return x;
    }

    int r = rad(tata[x]);
    tata[x] = r;
    return r;
}

int main()
{
    in>>N>>a>>b>>c;
    n = N - 1;

    for(int i = 1; i<=n; i++)
    {
        a = (1LL * a * i) % N;
        b = (1LL * b * i) % N;
        c = (1LL * c * i) % N;

        op[i] = {min(a, b), max(a, b), c};
    }

    for(int i = 1; i<=n + 1; i++)
    {
        tata[i] = i;
        cul[i] = 0;
    }

    for(int i = n; i>=1; i--)
    {
        int poz = rad(op[i].st);

        while(poz <= op[i].dr)
        {
            cul[poz] = op[i].val;
            tata[poz] = poz + 1;

            poz = rad(poz);
        }
    }

    for(int i = 1; i<=n; i++)
    {
        out<<cul[i]<<'\n';
    }

    return 0;
}