Cod sursa(job #3340574)

Utilizator Victor5539Tanase Victor Victor5539 Data 15 februarie 2026 01:01:01
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")
#pragma GCC target("avx,avx2,fma")

using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");

const int NMAX=1e6;
int n,a,b,c,i,sol[NMAX+5],nxt[NMAX+5];

struct query{
int a,b,c;}v[NMAX+5];

int find_next(int x)
{
    if (nxt[x]==x)
        return x;
    else
        return nxt[x]=find_next(nxt[x]);
}

int main()
{
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr); fout.tie(nullptr);

    fin>>n>>v[1].a>>v[1].b>>v[1].c;

    for (i=1; i<=n; i++)
        nxt[i]=i;

    for (i=2; i<n; i++)
    {
        v[i].a=(1LL*v[i-1].a*i)%n;
        v[i].b=(1LL*v[i-1].b*i)%n;
        v[i].c=(1LL*v[i-1].c*i)%n;
    }

    for (i=n-1; i>=1; i--)
    {
        int l=min(v[i].a,v[i].b),r=v[i].a+v[i].b-l;

        l=find_next(l);

        while (l<=r)
        {
            sol[l]=v[i].c;
            nxt[l]=find_next(l+1);
            l=find_next(l);

        }
    }

    for (i=1; i<n; i++)
        fout<<sol[i]<<"\n";
    return 0;
}