Cod sursa(job #1496096)

Utilizator nnnmmmcioltan alex nnnmmm Data 4 octombrie 2015 13:02:18
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<cstdio>
long long v[500001];
int pi[500001];
int main()
{
 freopen("reguli.in","r",stdin);
 freopen("reguli.out","w",stdout);
 int n;
 scanf("%d ",&n);
 for(int i=1;i<=n;i++)
     {
      scanf("%lld ",&v[i]);
      if(i>1)
         v[i-1]=v[i]-v[i-1];
     }
 /*for(int i=1;i<=n-1;i++)
     printf("%d ",v[i]);
 printf("\n");*/
 int k=0;
 pi[1]=0;
 for(int i=2;i<=n;i++)
     {
      while(k>0 && v[i]!=v[k+1])
            {
             k=pi[k];
            }
      if(v[i]==v[k+1])
         k++;
      pi[i]=k;
     }
 /*for(int i=1;i<=n;i++)
     printf("%d ",pi[i]);
 printf("\n");*/
 int val=n-pi[n-1]-1;
 printf("%d\n",val);
 for(int i=1;i<=val;i++)
     printf("%d\n",v[i]);
 fclose(stdin);
 fclose(stdout);
 return 0;
}