Cod sursa(job #3316533)

Utilizator adr_grIrina S adr_gr Data 19 octombrie 2025 08:42:08
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

struct Op {
    int index;
    int color;

    Op() : index(0), color(0) {}
};

int main() {


    int N, A, B, C;
    fin >> N >> A >> B >> C;

    vector<Op> assign(N + 2);
    vector<int> result(N, 0);

    for(int i = 1; i <= N - 1; ++i) {
        int l = min(A, B);
        int r = max(A, B);

        if(l == 0)
            l = 1;
        if(r >= N)
            r = N - 1;

        assign[l] = {i, C};
        assign[r + 1] = {-i, C};

        A = (1LL * A * (i + 1)) % N;
        B = (1LL * B * (i + 1)) % N;
        C = (1LL * C * (i + 1)) % N;
    }
    int current_op = 0;
    int current_color = 0;

    for(int i = 1; i <= N - 1; ++i) {
        if(assign[i].index > 0)
        {
            current_op = assign[i].index;
            current_color = assign[i].color;
        }
        else
        {
            if(assign[i].index < 0)
            {
                if(current_op == -assign[i].index)
                {
                    current_op = 0;
                    current_color = 0;
                }
            }

            result[i] = current_color;
        }

    for (int i = 1; i <= N - 1; ++i) {
        fout << result[i] << "\n";
    }

    return 0;
}