Cod sursa(job #3364974)

Utilizator TudorMitMituca Tudor TudorMit Data 14 septembrie 2026 20:30:31
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

int tata[1000005];
int rez[1000005];

struct operatie{
    int a;
    int b;
    int c;
};

operatie v[1000005];

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

int main()
{
    int n,i,st,dr,x;
    long long a,b,c;
    cin>>n>>a>>b>>c;
    v[1].a=a;
    v[1].b=b;
    v[1].c=c;
    for(i=2;i<=n-1;i++){
        a=(a*i)%n;
        b=(b*i)%n;
        c=(c*i)%n;
        v[i].a=a;
        v[i].b=b;
        v[i].c=c;
    }
    for(i=1;i<=n;i++)
        tata[i]=i;
    for(i=n-1;i>=1;i--){
        st=min(v[i].a,v[i].b);
        dr=max(v[i].a,v[i].b);
        x=rad(st);
        while(x<=dr){
            rez[x]=v[i].c;
            tata[x]=rad(x+1);
            x=rad(x);
        }
    }
    for(i=1;i<=n-1;i++)
        cout<<rez[i]<<"\n";
    return 0;
}