Cod sursa(job #1479615)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 31 august 2015 18:36:30
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <cstdio>
#define NMAX 1000023
int n,act=0,pos;
int a,b,c;
int v[NMAX],w[NMAX],disp[NMAX],cul[NMAX],q[NMAX];
void swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}
void update(int p1,int p2)
{
    act++;
    cul[act]=c;
    if(p1>p2) swap(p1,p2);
    v[p2]=0;
    v[p1]=act;
    w[p2+1]=act;
}
void ver()
{
    while(disp[q[pos]]==1) pos--;
}
int main()
{
    freopen ("curcubeu.in","r",stdin);
    freopen ("curcubeu.out","w",stdout);
    scanf("%d%d%d%d",&n,&a,&b,&c);
    for(int i=1;i<n;i++)
    {
        update(a,b);
        a=(a*(i+1))%n;
        b=(b*(i+1))%n;
        c=(c*(i+1))%n;
    }
  /*  for(int i=1;i<=n;i++) printf("%d ",v[i]);
    printf("\n");
    for(int j=1;j<=n;j++) printf("%d ",w[j]);
    */for(int i=1;i<n;i++)
    {
        if(v[i]>0)
        {
            q[++pos]=v[i];
        }
        if(w[i]>0)
        {
            disp[w[i]]=1;
            ver();
        }
       // for(int j=1;j<=pos;j++) printf("%d ",q[j]);
    printf("%d\n",cul[q[pos]]);
      //  printf("\n");
    }
}