Cod sursa(job #3365543)

Utilizator Andrada_MincaAndrada Minca Andrada_Minca Data 22 septembrie 2026 10:47:59
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");
vector<long long> nexts;
long long poola(long long a) {
    long long cp=a;
    while (nexts[a]!=a) {
        a=nexts[a];
    }
    while (nexts[cp]!=cp) {
        long long aux=nexts[cp];
        nexts[cp]=a;
        cp=aux;
    }
    return a;
}
int main() {
    long long n,a,b,c;
    cin>>n>>a>>b>>c;
    vector<long long>l(n+1);
    vector<long long>r(n+1);
    vector<long long>x(n+1);

   for (long long i=1;i<n;i++) {
       a=(a*i)%n;
       b=(b*i)%n;
       c=(c*i)%n;
       l[i]=a;
        r[i]=b;
        x[i]=c;
    }
    nexts.resize(n+1);
    for (long long j=1;j<=n;j++) {
        nexts[j]=j;
    }
    //nexts[0]=1;
    vector<long long>ans(n+1);
    for (long long i=n-1;i>0;i--)
    {
        a=min(l[i],r[i]);
        b=max(l[i],r[i]);
        c=x[i];
        //if (a==0&&b==0)continue;
        long long j=0;
        for (j=poola(a);j<=b;j=poola(j)) {
            //cout<<j<<" ";
            ans[j]=c;
            nexts[j]=poola(j+1);
        }
    }
    for (long long i=1;i<n;i++) {
        cout<<ans[i]<<'\n';
    }
    return 0;
}