Pagini recente » Cod sursa (job #1976786) | Cod sursa (job #397534) | Cod sursa (job #1797023) | Cod sursa (job #579181) | Cod sursa (job #239701)
Cod sursa(job #239701)
#include <stdio.h>
long A[500001];
int p[500001],n;
int main()
{
FILE *in = fopen("reguli.in","r");
FILE *out = fopen("reguli.out","w");
fscanf(in,"%d",&n);
int nr=n,i;
long long x;
fscanf(in,"%d",&A[0]);
for (i=1;i<n;i++)
{
fscanf(in,"%d",&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 (p[i] && A[1]==A[i+1]) if (p[i]<nr) nr=p[i];
}
fprintf(out,"%d\n",nr);
for (i=1;i<=nr;i++) fprintf(out,"%d\n",A[i]);
}