Cod sursa(job #3363787)

Utilizator medeeavasile56@gmail.comVasile Medeea [email protected] Data 22 august 2026 18:07:42
Problema Curcubeu Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");
vector<int> nxt,a,b,c,sol; int n;
int f(int x)
{
    int r=x;
    while(r<n&&nxt[r]!=r){
        r=nxt[r];
    }
    while(x<n&&nxt[x]!=x){
        int urm=nxt[x];
        nxt[x]=r;
        x=urm;
    }
    return r;
}
int main()
{
    int a1,b1,c1; cin>>n>>a1>>b1>>c1;
    a.resize(n); b.resize(n); c.resize(n);
    a[1]=a1; b[1]=b1; c[1]=c1;
    for(int i=2;i<=n-1;i++){
    a[i]=(long long) a[i-1]*i%n;
    b[i]=(long long) b[i-1]*i%n;
    c[i]=(long long) c[i-1]*i%n;
    }
    sol.resize(n,-1);nxt.resize(n);
    for(int i=1;i<=n-1;i++) nxt[i]=i;
    for(int i=n-1;i>=1;i--)
    {
        int st,dr; st=min(a[i],b[i]); dr=max(a[i],b[i]);
        st=f(st);
        while(st<=dr)
        {
            //if(sol[st]==-1)
            sol[st]=c[i];
            nxt[st]=f(st+1);
            st=f(st);
        }
    }
    for(int i=1;i<n;i++) cout<<sol[i]<<'\n';
    return 0;
}