Cod sursa(job #195687)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 20 iunie 2008 21:11:42
Problema Reguli Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>

#define N_Max 1000

long long n,i,k,q,s;
long long A[N_Max],PI[N_Max],X[N_Max];

int main()
{
freopen("reguli.in","rt",stdin);
freopen("reguli.out","wt",stdout);

scanf("%lld",&n);
for (i=0;i<n;i++)
    scanf("%lld",&A[i]);

for (i=1;i<n;i++);
    X[i]=A[i]-A[i-1];

// functia prefix

k=0;
PI[1]=0;
for (q=2;q<n;q++)
    {
    while (k>0 && X[k+1]!=X[q])
	  k=PI[k];
    if (X[k+1]==X[q]) k++;

    PI[q]=k;

}

k=n-1-PI[n-1];
s=1;
for (i=k+1;i<n;i++)
    if (X[i]!=X[i-k])
    {
    s=0;
    break;
    }
if (!s) k=n-1;

printf("%lld\n",k);
for (i=1;i<=k;i++);
    printf("%lld\n",X[i]);
return 0;}