Pagini recente » Cod sursa (job #353624) | Cod sursa (job #91938)
Cod sursa(job #91938)
#include<stdio.h>
#define vv 500002
long n;
long long x[vv],w[vv],p[vv],max;
void citire()
{
freopen("reguli.in","r",stdin);
scanf("%ld",&n);
for (int i=0; i<n; i++)
scanf("%lld",&x[i]);
fclose(stdin);
}
void prec()
{
int k=0;
p[1]=0;
w[1]=x[1]-x[0];
max=1;
for (int i=2; i<n; i++)
{
w[i]=x[i]-x[i-1];
while (k>0 && w[k+1]!=w[i])
k=p[k];
if (w[k+1]==w[i])
++k;
p[i]=k;
if (p[i]==0)
max=i;
}
}
void afisare()
{
freopen("reguli.out","w",stdout);
printf("%lld\n",max);
for (int i=1; i<=max; i++)
printf("%lld\n",w[i]);
fclose(stdout);
}
int main()
{
citire();
prec();
afisare();
return 0;
}