Cod sursa(job #3316537)

Utilizator adriana_grGrama Adriana adriana_gr Data 19 octombrie 2025 09:03:33
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;

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

struct Operatie {
    int index;
    int culoare;
};

int main() {

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

    vector<Operatie> marcari(N+2);
    vector<int> rezultat(N,0);

    for(int i=1;i<=N-1;++i){
        int puncte=min(A,B);
        int dreapta=max(A,B);
        if(puncte==0) puncte=1;
        if(dreapta>=N) dreapta=N-1;
        marcari[puncte]={i,C};
        marcari[dreapta+1]={-i,C};
        A=(1LL*A*(i+1))%N;
        B=(1LL*B*(i+1))%N;
        C=(1LL*C*(i+1))%N;
    }

    int operatieCurenta=0;
    int culoareCurenta=0;

    for(int i=1;i<=N-1;++i){
        if(marcari[i].index>0){
            operatieCurenta=marcari[i].index;
            culoareCurenta=marcari[i].culoare;
        }else if(marcari[i].index<0){
            if(operatieCurenta==-marcari[i].index){
                operatieCurenta=0;
                culoareCurenta=0;
            }
        }
        rezultat[i]=culoareCurenta;
    }

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

    return 0;
}