void manacher()
{
int n=0,k=0;
ch[0]='$';
int len=strlen(ch+1);//从一开始读的
for(i=1;i<=len;i++)
{
a[++n]='#',a[++n]=ch[i];
}
a[++n]='#';
for(i=1;i<=n;i++)
{
if(p[k]+k<i)
{
p[i]=0;
while(a[p[i]+i]==a[i-p[i]])++p[i];
}else
{
p[i]=min(p[k]+k-i,p[k*2-i]);
while(a[p[i]+i]==a[i-p[i]])++p[i];
}
if(i+p[i]>p[k]+k)k=i;
}
}