Час

07:43:38
25 May 2012
Версія для друку

Найбільша грань

   Гранню (border, verge, brink) br рядка S називається довільний власний префікс цього рядка, рівний суфіксу S.

   Рядок S = abaababaabaab має дві грані (не порожні) - ab та abaab. Радок S = abaabaab також має дві грані - ab та abaab, але друга грань - перекривається. Рядок довжини n з символу, що повторюється, наприклад aaaaaaaa (або a8), має n-1 грань. Для S = a8 це грані: a, aa, aaa, aaaa, aaaaa, aaaaaa, aaaaaaa.

   Поняття "власний префікс" виключає грань, яка співпадає з самим рядком.

   Довжина грані - це кількість символів у ній.

   Природним узагальненням поняття "грань" є поняття "найбільша грань" - це найбільший (за кількістю символів) власний префікс рядка, рівний його суфіксу.


Технічні умови

   Вхідні дані

   Дано рядок S (|S| ≤ 106).

   Вихідні дані

   Єдине число - довжина найбільшої грані.


Інформація про задачу

Ліміт часу: 1 секунда
Ліміт пам`яті: 64 MB
Бали за пройдений тест: 1.6129
Складність: 30% 43/61
Класифікація: Алгоритми для рядків

Приклад

Приклад вхідних даних

abaabaab

Приклад вихідних даних

5


← Сортування ДНК Список задач Найбільша грань підрядка →