Cod sursa(job #3362108)

Utilizator RZV139fjDragomir Ioan Razvan RZV139fj Data 2 august 2026 18:26:07
Problema Curcubeu Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
vector<int> tata;
vector<int> sz;
int culoare[1000004];

long long A[1000002],B[1000002],C[1000002];

int n,q,maxim=0,a1,b1,c1;

int rad(int x)
{
    if(tata[x]==0)
    {
        return x;
    }
    tata[x]=rad(tata[x]);
    return tata[x];
}

void join(int x,int y)
{
    x=rad(x);
    y=rad(y);

    if(sz[x]>sz[y])
    {
        sz[x]+=sz[y];
        tata[y]=x;
    }
    else
    {
        sz[y]+=sz[x];
        tata[x]=y;
    }
}



void query(int x,int y)
{
    if(rad(x)==rad(y))
    {
        fout<<"DA"<<endl;
    }
    else fout<<"NU"<<endl;
}

bool comp(pair<int,int>a, pair<int,int>b)
{
    return a.first<b.first;
}


int main()
{
    tata.resize(1000005);
    sz.resize(1000005,1);


    fin>>n>>A[1]>>B[1]>>C[1];
    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 st=min(A[i],B[i]);
        int dr=max(A[i],B[i]);
        int c=C[i];
        for(int j=rad(st);j<=dr;j=rad(j+1))
        {
            culoare[j]=c;
            tata[j]=j+1;
        }
    }
    for(int i=1;i<n;i++) fout<<culoare[i]<<endl;






    return 0;
}