Cod sursa(job #3260664)

Utilizator alecu2008Alecu Alexandru alecu2008 Data 3 decembrie 2024 10:23:29
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

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

vector<int>a,b,c,par,col;
int n,x,y,pos;

int getroot(int nod){
    if(nod==par[nod])return nod;
    else return par[nod]=getroot(par[nod]);



}





int main()
{
    fin>>n;
    a.resize(n+1);
    b.resize(n+1);
    c.resize(n+1);
    par.resize(n+1);
    col.resize(n+1);
    fin>>a[1]>>b[1]>>c[1];
    if(a[1]>b[1])swap(a[1],b[1]);
    for(int i=2;i<n;i++){
        a[i]=(i*a[i-1])%n;
        b[i]=(i*b[i-1])%n;
        c[i]=(i*c[i-1])%n;
        if(a[i]>b[i])swap(a[i],b[i]);
    }
    for(int i=1;i<=n;i++)par[i]=i;
    for(int i=n-1;i>=1;i--){
        pos=getroot(a[i]);
        while(pos<=b[i]){
            col[pos]=c[i];
            par[pos]=b[i]+1;
            pos=getroot(pos+1);
        }
    }
    for(int i=1;i<=n-1;i++)fout<<col[i]<<'\n';

}