Cod sursa(job #2562129)

Utilizator Diana_IonitaIonita Diana Diana_Ionita Data 29 februarie 2020 12:25:09
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int n,j;
int a[1000005],b[1000005],c[1000005],sef[1000005],cul[1000005];
int fiind(int x)
{
    int v,r=x;
    while(sef[r])
        r = sef[r];
    while(sef[x]!=0)
    {
        v = sef[x];
        sef[x] = r;
        x = v;
    }
    return r;
}
int main()
{
    fin>>n>>a[1]>>b[1]>>c[1];
    if (a[1]>b[1])
        swap(a[1],b[1]);
    for (int i=2; i<n; i++)
    {
        a[i]=(1LL * i * a[i-1])%n;
        b[i]=(1LL * i * b[i-1])%n;
        c[i]=(1LL * i * c[i-1])%n;
        if (a[i]>b[i])
            swap(a[i],b[i]);
    }
    for (int i=n-1; i>0; i--)
    {
        j = fiind(a[i]);
        while(j<=b[i])
        {
            if (cul[j]==0)
            {
                cul[j]=c[i];
                sef[j]=b[i];
            }
            j=fiind(++j);
        }
    }
    for (int i=1; i<n; i++)
        fout<<cul[i]<<'\n';
    return 0;
}