Pagini recente » Cod sursa (job #2125959) | Cod sursa (job #1549349) | Cod sursa (job #1906201) | Cod sursa (job #1004701)
#include<cstdio>
#include<cstring>
using namespace std;
int i,j,T,n,P,R,Z[500009];
long long x1,ul,a[500009];
int min(int a,int b){if(a<b) return a;return b;}
void afis(int per)
{
printf("%d\n",per);
for(i=1;i<=per;i++)
printf("%lld\n",a[i]);
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&n);
scanf("%lld",&ul);
for(i=2;i<=n;i++)
{
scanf("%dll",&x1);
a[i-1]=x1-ul;
ul=x1;
}
n--;
for(i=2;i<=n;i++)
{
if(R>=i) Z[i]=min(Z[i-P+1],R-i+1);
while(a[i+Z[i]]==a[Z[i]+1]&&i+Z[i]<=n) Z[i]++;
if(i+Z[i]-1>R){R=i+Z[i]-1;P=i;}
}
for(i=1;i<=n;i++)
{
for(j=1;j*i<n;j++)
if(Z[j*i+1]<min(i,n-j*i)) break;
if(j*i<n) continue;
afis(i);
return 0;
}
return 0;
}