Cod sursa(job #246111)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 19 ianuarie 2009 22:24:37
Problema Reguli Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>
#define dim 500001
int n,i,k,a[dim],b[dim];
void fill()
{int x,y;
     scanf("%d",&y);
     for(i=1;i<n;i++)
     {
                      scanf("%d",&x);
                      a[i]=x-y;
                      y=x;
     }}
int check(int y)
{int x,p;
     x=1;
     for(p=y;p<n;++p,++x)
{ 
     if(x==k+1)
               x=1;
     if(a[p]!=b[x])
                   return 1;
     
}
return 0;
}
void afis(int i)
{
     printf("%d\n",k);
     for(k=1;k<=i;k++)
     printf("%d\n",b[k]);
}
int solve()
{    
     k=1;
     for(i=2;i<n;i++)
     {
                 
                     if(b[1]==a[i]) 
                   {//printf("%d %d %d %d\n",i,n,b[1],a[i]);
                                     if(check(i)==0)
                     {afis(k);
                     return 0;
                     }
                     }
                     b[++k]=a[i];
                    
}
afis(n-1);
}
int main ()
{
    freopen("reguli.in","r",stdin);
    freopen("reguli.out","w",stdout);
    scanf("%d",&n);
    fill();
    b[1]=a[1];
    solve();
   // afis(n);
   
}