Cod sursa(job #1820047)

Utilizator tgm000Tudor Mocioi tgm000 Data 1 decembrie 2016 07:55:31
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<cstdio>
struct ceva{int a,b,c;};
ceva v[1000000];
int jump[1000000];
int cul[1000000];
int main(){
   int n,aux,i,j,jj;
   freopen("curcubeu.in","r",stdin);
   freopen("curcubeu.out","w",stdout);
   scanf("%d%d%d%d",&n,&v[1].a,&v[1].b,&v[1].c);
   jump[1]=2;
   if(v[1].a>v[1].b){
      aux=v[1].a;
      v[1].a=v[1].b;
      v[1].b=aux;
   }
   for(i=2;i<n;i++){
      v[i].a=((long long)v[i-1].a*i)%n;
      v[i].b=((long long)v[i-1].b*i)%n;
      v[i].c=((long long)v[i-1].c*i)%n;
      if(v[i].a>v[i].b){
         aux=v[i].a;
         v[i].a=v[i].b;
         v[i].b=aux;
      }
      jump[i]=i+1;
   }
   for(i=n-1;i>=1;i--){
      for(j=v[i].a;j<v[i].b;){
         if(cul[j]==0)
            cul[j]=v[i].c;
         jj=jump[j];
         jump[j]=v[i].b;
         j=jj;
      }
      if(cul[v[i].b]==0)
         cul[v[i].b]=v[i].c;
   }
   for(i=1;i<=n-1;i++)
      printf("%d\n",cul[i]);
   return 0;
}