#include<bits/stdc++.h>
using namespace std;
long long maxx=11000000;
char str[2200150];
long long d[1100050];
int manacher(char *s){
int n=0,len=strlen(s+1);
str[0]='-';
for(int i=1;i<=len;i++){
str[++n]='#';
str[++n]=s[i];
}
str[++n]='#',str[++n]='-';
long long ans=0;
long long r=0,p=0;
for(int i=1;i<=n-2;i++){
if(i<r){
d[i]=min(d[2*p-i],r-i);
}
else{
d[r=i]=1;
}
while(i+d[i]<=n&&i-d[i]>=1&&str[i-d[i]]==str[i+d[i]])
d[i]++;
if(i+d[i]>r)
r=i+d[i]-1,p=i;
if(ans<d[i]-1){
ans=d[i]-1;
}
}
return ans;
}
char s[1100050];
int main(){
scanf("%s",s+1);
printf("%d",manacher(s));
return 0;
}
为什么12个RE