Pagini recente » Cod sursa (job #2405321) | Cod sursa (job #2210727) | Cod sursa (job #843772) | Cod sursa (job #102618) | Cod sursa (job #483033)
Cod sursa(job #483033)
#include<algorithm>
using namespace std;
#define DIM 500005
int n,pi[DIM];
long long a[DIM];
void kmp ()
{
int i,q=0;
for(i=2;i<=n;++i)
{
while(q>0 && a[q+1]!=a[i])
q=pi[q];
if(a[q+1]==a[i])
++q;
pi[i]=q;
}
}
int solve ()
{
int i,vf,ok=0;
for(i=n-1;i>0;--i)
if(!pi[i])
return i;
else
{
if(pi[i+1]<pi[i] && !ok)
{
vf=pi[i];
ok=1;
}
if(pi[i+1]<pi[i] && ok && pi[i]!=vf)
return i;
}
}
int main ()
{
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
int i,vf;
scanf("%d%d",&n,&a[1]);
for(i=2;i<=n;++i)
{
scanf("%lld",&a[i]);
a[i-1]=a[i]-a[i-1];
}
--n;
kmp ();
vf=solve ();
printf("%d\n",vf);
for(i=1;i<=vf;++i)
printf("%lld\n",a[i]);
return 0;
}