Cod sursa(job #3316469)

Utilizator adr_grIrina S adr_gr Data 18 octombrie 2025 21:12:30
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

    int N, A1, B1, C1;
    fin >> N >> A1 >> B1 >> C1;

    int M = N - 1;
    vector<int> A(M + 1), B(M + 1), C(M + 1);
    vector<int> culori(N, 0); // index de la 1 la N-1

    A[1] = A1;
    B[1] = B1;
    C[1] = C1;

    // Generam toate operatiile
    for (int i = 2; i <= M; ++i) {
        A[i] = (1LL * A[i - 1] * i) % N;
        B[i] = (1LL * B[i - 1] * i) % N;
        C[i] = (1LL * C[i - 1] * i) % N;
    }

    // Aplicam operatiile in ordine inversa
    for (int i = M; i >= 1; --i) {
        int st = min(A[i], B[i]);
        int dr = max(A[i], B[i]);

        for (int j = st; j <= dr; ++j) {
            if (culori[j] == 0) {
                culori[j] = C[i];
            }
        }
    }

    // Afisam culorile finale ale casutelor de la 1 la N-1
    for (int i = 1; i < N; ++i) {
        fout << culori[i] << '\n';
    }

    return 0;
}