📚【模板】manacher
时间复杂度是\(\operatorname{O}(n)\)
int p[N];
void manacher(const char *in) {
int len = strlen(in);
int mid = 0, R = 0;
p[0] = 1;
for(int i = 1;i < len;++i) {
if(i < R)
p[i] = min(p[mid*2-i],R-i+1);
while(in[i-p[i]] == in[i+p[i]])
p[i]++;
if(p[i]+i > R) {
R = p[i]+i-1;
mid = i;
}
}
}