Cod sursa(job #3353110)

Utilizator Grama2008Grama Andrei Teodor Grama2008 Data 4 mai 2026 21:30:07
Problema Curcubeu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>

using namespace std;

const int N=1e6+5, mod=1e9+7, C=1;
const long long INF=1e18;
//#define int long long

int a[N], b[N], c[N], color[N], parent[N], n;

int findparent(int x) {
    if (parent[x]==x) {
        return x;
    }
    return parent[x]=findparent(parent[x]);
}

void unite(int a, int b) {
    parent[a]=b;
}

void solve_testcase() {
    cin>>n>>a[1]>>b[1]>>c[1];
    for (int i=1;i<=n;i++) {
        parent[i]=i;
    }
    for (int i=2;i<n;i++) {
        a[i]=(a[i-1]*i)%n;
        b[i]=(b[i-1]*i)%n;
        c[i]=(c[i-1]*i)%n;
    }
    for (int i=n-1;i>=1;i--) {
        int l=min(a[i], b[i]), r=max(a[i], b[i]);
        l=findparent(l);
        while (l<=r) {
            color[l]=c[i];
            unite(l,l+1);
            l=findparent(l);
        }
    }
    for (int i=1;i<n;i++) {
        cout<<color[i]<<'\n';
    }
}

signed main() {
    freopen("curcubeu.in", "r", stdin);
    freopen("curcubeu.out", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int t=1;
    //cin>>t;
    while (t--) {
        solve_testcase();
    }
    return 0;
}