aha
在本地用O2编译运行测试输出的是2而评测机说回答的是4
#include<iostream>
using namespace std;
const int N=2e5+10;
int p,mx;
int n;
char str[N],tmp;
int ans;
int r[N];
int ll[N],rr[N];
int main()
{
freopen("C:\\Users\\dell\\Downloads\\P4555_12.in","r",stdin);
str[n++]='$';
str[n++]='#';
tmp=getchar();
while(tmp!=' '&&tmp!='\n'&&tmp!=EOF)
{
str[n++]=tmp;
str[n++]='#';
tmp=getchar();
}
str[n++]='~';
//cout<<str<<'\n';
for(int i=1;i<n;i++)
{
r[i]=1;
if(mx>i) r[i]=min(r[2*p-i],mx-i+1);
while(str[i+r[i]]==str[i-r[i]]) r[i]++;
if(i+r[i]-1>mx)
{
p=i;
mx=i+r[i]-1;
}
//cout<<"i="<<i<<" ri="<<r[i]<<'\n';
ll[i+r[i]-1]=max(ll[i+r[i]-1],r[i]-1);
rr[i-r[i]+1]=max(rr[i-r[i]+1],r[i]-1);
/*cout<<"ll["<<i+r[i]-1<<"]="<<r[i]-1<<'\n';
cout<<str<<'\n';
for(int j=0;j<i+r[i]-1;j++) cout<<' ';
cout<<"^\n";
cout<<"rr["<<i-r[i]+1<<"]="<<r[i]-1<<'\n';
cout<<str<<'\n';
for(int j=0;j<i-r[i]+1;j++) cout<<' ';
cout<<"^\n";*/
}
for(int i=2;i<=n;i++) rr[i]=max(rr[i],rr[i-2]-2);
for(int i=n;i>=2;i--) ll[i]=max(ll[i],ll[i+2]-2);
for(int i=2;i<=n-3;i++)
if(str[i]=='#'&&ll[i]>=1&&rr[i]>=1)
//{
ans=max(ans,ll[i]+rr[i]);
/*cout<<"i="<<i<<" ll[i]="<<ll[i]<<" rr[i]="<<rr[i]<<'\n';
cout<<str<<'\n';
for(int j=0;j<i;j++) cout<<' ';
cout<<"^\n";*/
//}
//else if(str[i]=='#')cout<<"i="<<i<<" ll[i]="<<ll[i]<<" rr[i]="<<rr[i]<<'\n';
cout<<ans<<'\n';
return 0;
}