Cod sursa(job #3363786)

Utilizator medeeavasile56@gmail.comVasile Medeea [email protected] Data 22 august 2026 18:03:30
Problema Curcubeu Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 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)
{
    if(x>=n) return n;
    if(nxt[x]==x) return x;
    return nxt[x]=f(nxt[x]);
}
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;
}