经测试很可能是init
函数中的输入出错了
请忽略丑陋的宏定义于命名空间
#include <bits/stdc++.h>
#define AK 1
#define Public signed
#define Class main
#define int long long
#define Max(a,b) (a>b?a:b)
#define Min(a,b) (a<b?a:b)
#define MAX(a,b,c) (Max(a,Max(b,c)))
#define MIN(a,b,c) (Min(a,Min(b,c)))
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define bulit(x) for(int i=head[x];i;i=edge[i].nxt)
#define mp(x,y) make_pair(x,y)
#define que std::priority_queue
#define ret register
#define inl inline
#define nsp namespace
#define whl while
#define MAXN(x) std::memset(x,0x3f,sizeof(x))
#define MINN(x) std::memset(x,-(0x3f),sizeof(x))
#define ender return 0
#define beginer signed main()
#define Clear(x) std::memset(x,0,sizeof(x))
#define C_STL(x) for(;!x.empty();)x.pop();
#define ULL unsigned long long
nsp FastIOstream{
inl void read(int &x){//Fast read
x=0;
int f=1;
char c=getchar();
for(;!isdigit(c);){
if(c=='-')f=-1;c=getchar();
}
for(;isdigit(c);){
x=(x<<1)+(x<<3)+c-48;
c=getchar();
}
x*=f;
return;
}
void print(int x){//Fast print
if(x<0){
x=-x;
putchar('-');
}
if(x>9){
print((x>>1)/5);
}
putchar(x%10+48);
return;
}
}
nsp Algorithm{
using std::max;
inl int fast_power(int base,int exp){
int res=1;
for(;exp;){
if(exp&1){
res*=base;
}
base*=base;
exp>>=1;
}
return res;
}
int GCD(int x,int y){
return y?x:GCD(y,x%y);
}
}
using FastIOstream::read;
using FastIOstream::print;
using namespace std;
char s[55000005];
int p[55000000],mid,r,ans=-(1<<30),cnt=0;
void init(){
s[0]='$';
s[1]='#';
cnt=1;
char c=getchar();
while(c>='a'&&c<='z'){
s[++cnt]=c;
s[++cnt]='#';
c=getchar();
}
}
beginer{
init();
rep(i,1,cnt){
if(r>=i){
p[i]=min(p[mid<<1-i],r-i+1);
}
while(s[i-p[i]]==s[i+p[i]]){
++p[i];
}
if(i+p[i]>r){
mid=i;
r=i+p[i]-1;
}
ans=max(ans,p[i]);
}
print(ans-1);
putchar('\n');
ender;
}