rt,数组开够了,为什么RE
#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
const int L=1.1e7+100;
char dat[L<<1];
int p[L<<1],cnt,ans;
int main(){
dat[0]='~';dat[1]='#';cnt=1;
char c;
while(c<'a' || c>'z')c=getchar();
while(c!=EOF){
dat[++cnt]=c;
dat[++cnt]='#';
c=getchar();
}
int r=0,mid=0;
for(int i=1;i<=cnt;i++){
if(i<=r)p[i]=min(p[mid/2-i],r-i+1);
while(dat[i-p[i]]==dat[i+p[i]])++p[i];
if(p[i]+i>r){
r=p[i]+i-1;
mid=i;
}
ans=max(ans,p[i]);
}
printf("%d",ans-1);
return 0;
}