Pagini recente » Cod sursa (job #966262) | Atasamentele paginii Clasament cei_mai_mari_olimpicari_runda_4 | Cod sursa (job #1092741) | Cod sursa (job #2070880) | Cod sursa (job #195693)
Cod sursa(job #195693)
#include <stdio.h>
#define NMAX 600000
long long x[NMAX],a[NMAX];
long long i,k,n,s,PI[NMAX];
int main()
{
freopen("reguli.in","rt",stdin);
freopen("reguli.out","wt",stdout);
scanf("%lld",&n);
for (i=0;i<n;i++)
scanf("%lld",&x[i]);
for (i=1;i<n;i++)
a[i]=x[i]-x[i-1];
//functia prefix
PI[1]=k=0;
for (i=2;i<n;i++)
{
while (k>0 && a[k+1]!=a[i])
k=PI[k];
if (a[k+1]==a[i])
k++;
PI[i]=k;
}
k=n-1-PI[n-1];
s=1;
for (i=k+1;i<n;i++)
if (a[i]!=a[i-k])
{s=0;
break;
}
if (!s) k=n-1;
printf("%lld\n",k);
for (i=1;i<=k;i++)
printf("%lld\n",a[i]);
return 0;}