#include<bits/stdc++.h>
using namespace std;
string s1,s2;int c,r,p[25000001],maxx=1;
int main()
{
cin>>s1;
s2=s2+"@#";
for(int i=0;i<s1.length();i++)
s2=s2+s1[i]+'#';
s2=s2+'$';
p[0]=p[1]=1,c=1,r=1;
for(int i=2;i<s2.length()-1;i++)
{
if(i>r)
p[i]=1;
else
p[i]=min(p[c+c-i],r-i+1);
while(s2[i+p[i]]==s2[i-p[i]])
p[i]++;
if(r<i+p[i]-1)
c=i,r=i+p[i]-1;
maxx=max(maxx,p[i]);
}
cout<<maxx-1;
return 0;
}
莫名TLE,搞不懂。