Cod sursa(job #2262262)

Utilizator cyg_SerbanBFlorin Gheorghe cyg_SerbanB Data 17 octombrie 2018 09:32:52
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda concurs_micut Marime 1.04 kb
#include <cstdio>
using namespace std;
const int nmax=1000001;
long long int A[nmax+5],B[nmax+5],C[nmax+5],sol[nmax+5],oc[nmax+5];
int main()
{
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    long long int n,i,j,k,ns,nd;
    scanf("%I64d%I64d%I64d%I64d",&n,&A[1],&B[1],&C[1]);
    oc[1]=1;
    for(i=2;i<=n-1;++i)
    {
        A[i]=(A[i-1]*i)%n;
        B[i]=(B[i-1]*i)%n;
        C[i]=(C[i-1]*i)%n;
        oc[i]=i;
    }
    for(i=n-1;i>=1;--i)
    {
        if(A[i]<B[i])
            ns=A[i];
        else
            ns=B[i];
        if(A[i]<B[i])
            nd=B[i];
        else
            nd=A[i];
        while(ns<=nd)
        {
            if(oc[ns]==ns)
            {
            sol[ns]=C[i];
            oc[ns]=nd;
            ns++;
            }
            else
            {
                int aux=oc[ns];
                oc[ns]=nd;
                ns=aux;
            }
        }
    }
    for(i=1;i<=n-1;++i)
        printf("%I64d\n",sol[i]);
    return 0;
}