Cod sursa(job #2262340)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 17 octombrie 2018 10:38:03
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda concurs_micut Marime 0.85 kb
#include <cstdio>
#include <algorithm>


using namespace std;
const int NMAX = 1000005;
int a[NMAX],b[NMAX],c[NMAX],imobiliare[NMAX],nexxt[NMAX];

int main()
{
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    int x,y,z,n;
    scanf("%d%d%d%d",&n,&x,&y,&z);
    a[1] = x;
    b[1] = y;
    c[1] = z;
    nexxt[1]=1;
    for(int i = 2 ; i < n ; 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;nexxt[i]=i;}
    for(int i = n-1 ; i > 0; i--)
    {
        int st,dr;st = min(a[i],b[i]);dr = max(a[i],b[i]);
        while(st<=dr)
        {
            if(imobiliare[st] == 0)
            {nexxt[st] = dr+1;imobiliare[st] = c[i];st++;}
            else st = nexxt[st];
        }
    }
    for(int i = 1 ; i < n ; i++)
        printf("%d\n",imobiliare[i]);
    return 0;
}