Cod sursa(job #3331328)

Utilizator boboc132Boboc Teodor boboc132 Data 26 decembrie 2025 18:20:11
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

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

const int MAX=1000005;
long long T[MAX],sol[MAX];

int get_root(int nod){
    int root=nod;
    while(T[root]!=root){
        root=T[root];
    }
    while(T[nod]!=root){
        int aux=T[nod];
        T[nod]=root;
        nod=aux;
    }
    return root;
}   

int main(){
    ios_base::sync_with_stdio(0);
    in.tie(0);
    out.tie(0);
    int n;
    long long Ar,Br,Cr;
    in>>n>>Ar>>Br>>Cr;
    for(int i=1;i<=n+1;i++){
        T[i]=i;
    }
    for(int i=1;i<n;i++){
        int st=min(Ar,Br)+1;
        int dr=max(Ar,Br)+1;
        for(int j=get_root(st);j<=dr;j=get_root(j)){
            sol[j]=Cr;
            T[j]=get_root(j+1);
        }
        Ar = (Ar * (i + 1)) % n;
        Br = (Br * (i + 1)) % n;
        Cr = (Cr * (i + 1)) % n;    
    }
    for(int i=1;i<n;i++){
        out<<sol[i]<<"\n";
    }
}