#include<bits/stdc++.h>
using namespace std;
const int maxn = 11000005, maxn2 = 22000005;
char s[maxn], s2[maxn2];
int m[maxn2], len;
void Manacher() {
int l = 0, mx = 1, id = 0;
s2[l++] = '$';
s2[l++] = '#';
for (int i = 0; i < len; i++) {
s2[l++] = s[i];
s2[l++] = '#';
}
s2[l] = 0;
for (int i = 0; i < l; i++) {
m[i] = i > mx ? min(m[2 * id - i], mx - i) : 1;
while (s2[i - m[i]] == s2[i + m[i]]) m[i]++;
if (i + m[i] > mx) {
mx = i + m[i];
id = i;
}
}
}
int main() {
//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
while (s[len] = getchar(), islower(s[len])) len++;
Manacher();
int ans = 0;
for (int i = 0; i < len * 2 + 2; i++) {
ans = max(ans, m[i] - 1);
}
cout << ans;
return 0;
}
照着马拉车写的,不是说O(n)的吗?还有TLE,求大佬指点