Cod sursa(job #3331395)

Utilizator boboc132Boboc Teodor boboc132 Data 27 decembrie 2025 13:11:16
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

vector<int>T;

int root(int nod){
    if(T[nod]==nod)
        return nod;
    return T[nod]=root(T[nod]);
}

int main(){
    int n;
    in>>n;
    vector<int>a(n+1);
    vector<int>b(n+1);
    vector<int>c(n+1);
    vector<int>rez(n+1,0);
    T.resize(n+2);
    in>>a[1]>>b[1]>>c[1];
    for(int i=1;i<=n+2;i++){
        T[i]=i;
    }
    for(int i=2;i<n;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;
    }
    for(int i=n-1;i>=1;i--){
        int st=min(a[i],b[i]);
        int dr=max(a[i],b[i]);
        if(st==0)
            st=1;
        for(int j=root(st);j<=dr;j=root(j)){
            rez[j]=c[i];
            T[j]=j+1;
        }
    }
    for(int i=1;i<(int)rez.size()-1;i++){
        out<<rez[i]<<"\n";
    }
}