void malache() { word3[0]='!'; int len=strlen(word1); for(int i=1;;i++) { if(i%2==0) { if(i/2-1==len) { word3[i]='~'; word3[i+1]=0; break; } word3[i]=word1[i/2-1]; } else word3[i]='#'; } int maxx=0,id=0; for(int i=0;word3[i];i++) { if(i<maxx)p[i]=min(p[2*id-i],maxx-i); else p[i]=0; while(i-p[i]-1>=0&&word3[i+p[i]+1]==word3[i-p[i]-1])p[i]++; if(i+p[i]>maxx) { id=i; maxx=i+p[i]; } } }