Pagini recente » Cod sursa (job #466957) | Cod sursa (job #1553075) | Cod sursa (job #873622) | Cod sursa (job #1878956) | Cod sursa (job #239718)
Cod sursa(job #239718)
#include <stdio.h>
long long A[500001];
int p[500001];
int main()
{
FILE *in = fopen("reguli.in","r");
FILE *out = fopen("reguli.out","w");
int n;
fscanf(in,"%d",&n);
int nr=n-1,i;
long long x;
fscanf(in,"%lld",&A[0]);
for (i=1;i<n;i++)
{
fscanf(in,"%lld",&x);
A[i] = x-A[0];
A[0]=x;
}
int k=0;
for (i=2;i<n;i++)
{
while (k>0 && A[k+1]!=A[i]) k = p[k];
if (A[k+1]==A[i]) k++;
p[i]=k;
if (k && A[1]==A[i+1]) nr=k;
}
fprintf(out,"%d\n",nr);
for (i=1;i<=nr;i++) fprintf(out,"%lld\n",A[i]);
}