Cod sursa(job #2262331)

Utilizator Cojocaru_Andrei_CristianCojocaru Andrei Cristian Cojocaru_Andrei_Cristian Data 17 octombrie 2018 10:30:11
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda concurs_micut Marime 0.83 kb
#include <fstream>

using namespace std;
int a[1000005],b[1000005],c[1000005],v[1000005],v1[1000005];
int main()
{
    ifstream cin("curcubeu.in");
    ofstream cout("curcubeu.out");
    int n,st,dr;
    cin>>n>>a[1]>>b[1]>>c[1];
    v[1]=1;
    for(int i=2; i<=n-1; i++)
    {
        a[i]=(1LL*a[i-1]*i)%n;
        b[i]=(1LL*b[i-1]*i)%n;
        c[i]=(1LL*c[i-1]*i)%n;
        v[i]=i;
    }
    for(int i=n-1;i>=1;i--)
    {
        if(a[i]>b[i])
            st=b[i],dr=a[i];
        else
            st=a[i],dr=b[i];
        while(st<=dr)
        {
            if(v1[st])
                st=v[st];
            else
            {
                v1[st]=c[i];
                v[st]=dr+1;
                ++st;
            }
        }
    }
    for(int i=1;i<=n-1;i++)
        cout<<v1[i]<<"\n";
    return 0;
}