Pagini recente » Cod sursa (job #811095) | Cod sursa (job #821710) | Cod sursa (job #329930) | Cod sursa (job #1759020) | Cod sursa (job #178451)
Cod sursa(job #178451)
#include <cstdio>
using namespace std;
long long n,i,j,p[500100],a[500100],x,ant,mx;
int main(){
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d",&n);
scanf("%d",&a[0]);
ant=a[0];
for (i=1;i<n;i++)
{
scanf("%d",&j);
a[i]=j-ant;
ant=j;
}
n--;
p[0]=-1;
p[1]=0;
for (i=2;i<=n;i++)
{
x=p[i-1];
if (a[x+1]==a[i])
p[i]=x+1;
else
{
while (x>=0)
{
x=p[x];
if (x<0)
break;
if (a[x+1]==a[i])
{
p[i]=x+1;
break;
}
}
}
}
for (i=1;i<=n;i++)
if ((i-p[i])>mx)
mx=i-p[i];
printf("%d\n",mx);
for (i=1;i<=mx;i++)
printf("%d\n",a[i]);
return 0;
}