为什么我马拉车一个点都过不去啊(啊啊
#include<bits/stdc++.h>
using namespace std;
const int N=11000002;
char a[N],S[N<<1];
int P[N<<1],R,C,cnt,ans=1;
void change(){
S[cnt++]='&';
int n=strlen(a);
for(int i=0;i<n;i++) S[cnt++]='#',S[cnt++]=a[i];
S[cnt++]='#';S[cnt++]='$';
}
int manacher(){
R=0,C=0;
for(int i=1;i<cnt;i++){
if(i<R) P[i]=min(P[(C<<1)-i],P[C]+C-i);
else P[i]=1;
while(S[i+P[i]]==S[i-P[i]]) {
P[i]++;
}
if(P[i]+i>R){
R=P[i]+i;
C=i;
}
}
}
int main(){
scanf("%s",&a);
change();
manacher();
for(int i=1;i<cnt;i++) {
//cout<<"i:"<<i<<" "<<P[i]<<endl;
ans=max(ans,P[i]);
}
cout<<ans-1;
return 0;
}