Cod sursa(job #2956349)

Utilizator Zed1YasuoAlex Birsan Zed1Yasuo Data 19 decembrie 2022 11:30:25
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
const int NMAX=1000003;
int n,A,B,C,a[NMAX],b[NMAX],c[NMAX],poz[NMAX],v[NMAX];
int main()
{
    f>>n>>A>>B>>C;
    a[1]=A;
    b[1]=B;
    c[1]=C;
    if(a[1]>b[1])
        swap(a[1],b[1]);
    for(int i=2;i<=n;i++)
        {
            a[i]=(1LL*a[i-1]*i)%n;
            b[i]=(1LL*b[i-1]*i)%n;
            if(a[i]>b[i])
                swap(a[i],b[i]);
            c[i]=(1LL*c[i-1]*i)%n;
        }
    for(int i=n-1;i>0;i--)
    {
        int st=a[i];
        int dr=b[i];
        while(st<=dr)
        {
            if(!poz[st])
            {
                v[st]=c[i];
                poz[st]=dr+1;
                st++;
            }
            else
            {
                int st1=st;
                st=poz[st]+1;
                poz[st1]=max(poz[st1],dr+1);
            }
            poz[st]=max(poz[st],dr+1);
        }
    }
    for(int i=1;i<n;i++)
    {
        g<<v[i]<<'\n';
    }
    return 0;
}