Cod sursa(job #3182446)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 8 decembrie 2023 22:54:01
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;
ifstream fin ("curcubeu.in");
ofstream fout("curcubeu.out");
int n,a,b,c,i,NEXT[1000005],j,sol[1000005];
struct elem
{
    int A,B,C;
}Q[1000005];
int get_NEXT(int x)
{
    int c=x,aux;
    while(NEXT[x]!=x)
        x=NEXT[x];
    while(c!=x)
    {
        aux=NEXT[c];
        NEXT[c]=x;
        c=aux;
    }
    return c;
}
int main()
{
    fin>>n>>Q[1].A>>Q[1].B>>Q[1].C;
    if(Q[1].A>Q[1].B)
        swap(Q[1].A,Q[1].B);
    for(i=1;i<=n;i++)
        NEXT[i]=i;
    for(i=2;i<n;i++)
    {
        Q[i].A=(1LL*Q[i-1].B*i)%n;
        Q[i].B=(1LL*Q[i-1].B*i)%n;
        Q[i].C=(1LL*Q[i-1].C*i)%n;
        if(Q[i].A>Q[i].B)
            swap(Q[i].A,Q[i].B);
    }
    for(i=n-1;i>0;i--)
    {
        j=get_NEXT(Q[i].A);
        while(j<=Q[i].B)
        {
            sol[j]=Q[i].C;
            NEXT[j]=get_NEXT(j+1);
            j=NEXT[j];
        }
    }
    for(i=1;i<n;i++)
        fout<<sol[i]<<"\n";
    return 0;
}