Тема: Довгий паліндром
Зенику задано рядок S, який складається з N англійських літер. Потрібно допомогти йому порахувати довжину найбільшого підрядка, який є паліндромом.
  Вхідні дані: 
В першому рядку задане одне ціле число N - розмір рядка.
 В другому задано рядок S який складається з N малих англійських літер.
Вихідні дані: в єдиному рядку вивести довжину найбільшого підрядка S, який є паліндромом.
    Обмеження: 1<=N<=7000
  Пробний тест:
   N=6
    S=banana
   Результат: 5
Я написав код який на алготестері проходить лише для 10 тестів. Розумію, що при великих кількостях символів він є неефективним. Чув що можна оптимізувати використовуючи алгоритм Манакера про не розумію як це зробити. Ось мій код:
type mas=array[1..7000] of char;
var
   s:mas; palindrom:boolean;
   i,j,mx,n,k,m:integer;
begin
  readln(n);
  for i:=1 to n do 
    read(s[i]);
  if n<2 then 
    mx:=1
  else
  begin
    mx:=1;
    for i:=1 to n-1 do
      for j:=i+1 to n do 
      begin
        palindrom:=true;
        k:=i; 
        m:=j;
        while k<m do 
        begin 
          if s[k]<>s[m] then 
            palindrom:=false;
          k:=k+1;
          m:=m-1
        end;
        if (palindrom=true) and (j-i+1>mx) then
          mx:=j-i+1;
      end;
  end;
  write(mx);
end.
