#include<stdio.h>
#include<algorithm>
using namespace std;
char a[10000005],s[20000005];
int p[20000005]={0},n;
int main(){
int i,len;
gets(&a[1]);
s[0]=1;
for(i=1;a[i];i++)
s[i*2-1]=2,s[i*2]=a[i];
s[i*2-1]=2,s[len=i*2]=0;
n=len;
int mx=0,id,ans=1;
for(i=0;i<len;i++){
if(mx>i) p[i]=min(p[id*2-i],mx-i);
else p[i]=1;
for(;s[i-p[i]]==s[i+p[i]];p[i]++);
if(p[i]+i>mx) mx=p[i]+i,id=i;
ans=max(ans,p[i]);
}
printf("%d\n",ans-1);
}
沒有留言:
張貼留言