void manacher(char s[],int n){ int pos=0,mx=0; for(int i=1;i<=n;i++){ if(i<mx) p[i]=min(p[(pos<<1)-i],mx-i]); else p[i]=1; while(s[i+p[i]]==s[i-p[i]]) p[i]++; if(i+p[i]>mx) mx=i+p[i],pos=i; } }