G. Общая подстрока двух строк
Найдите длину наибольшей общей подстроки двух строк.
Тот же двоичный поиск
Свойство «есть общая подстрока длины » монотонно, поэтому длина ищется двоичным поиском. Проверка: собрать хеши всех кусков длины первой строки в множество и пройти по кускам второй.
Сложность при сортировке или хеш-таблице. Это принципиально лучше квадратичной динамики из прошлого занятия, где ограничение было 2500, а здесь - .
Почему динамика тут не проходит
Динамика «наибольший общий суффикс префиксов» требует таблицы : при это ячеек. Даже свёрнутая до двух строк, она требует операций по времени. Хеши убирают именно перебор пар позиций.
Ловушка сравнения
Если сравнивать хеши по одному модулю , при кусков ожидаемое число ложных совпадений около 20 - и ответ будет завышен. Два модуля обязательны. Проверить это легко: посчитайте ответ обеими схемами на строке из одной буквы.
Подробнее: «Сравнение подстрок».
Формат ввода
В первой строке - строка , во второй - строка . Обе непусты, состоят из строчных латинских букв, длины не превосходят .
Формат вывода
Выведите длину наибольшей общей подстроки. Если общих подстрок нет, выведите 0.
Примеры
abcde cdefg
3
abc xyz
0