Pagini recente » Mozaic | Cod sursa (job #168992) | Istoria paginii runda/simulare_oji_2023_clasele_11_12_15_martiee | Cod sursa (job #282263) | Cod sursa (job #1517009)
#include <iostream>
#include <cstdio>
#define lim 500100
using namespace std;
int maxim,v[lim],dif[lim],n,pref[lim];
int prefix()
{
int i=1,j=2;
pref[0]=1;
while (j<n)
{
pref[j]=1;
if (dif[i]!=dif[j])
if (i!=1)
i=pref[i-1];
else
++j;
else
{
pref[j]=i+1;
if (pref[j]>maxim)
maxim=pref[j];
++i;
++j;
}
}
for(int m=n; m>0; --m)
if ( pref[m] && m+1-pref[m] && ((m+1)%(m+1-pref[m]))==0)
return maxim=m+1-pref[m];
}
int main()
{
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d",&n);
for (int i=0;i<n;++i)
scanf("%d",&v[i]);
for(int i=1;i<n-1;++i)
dif[i]=v[i]-v[i-1];
int lun=prefix();
printf("%d\n",lun);
for (int i=1;i<=lun;++i)
printf("%d\n",dif[i]);
return 0;
}