Задача №99. КМП
Разбор добавил Валентин Лукьянец
Образуем новую строку Q=T+#+S, где # - разделитель, который больше нигде не встречается. Это может быть любой символ кроме латинских букв (для данной задачи). Подсчитаем префикс-функцию P[i], i=0..|Q|-1 для строки Q. Тогда по определению P[i] показывает, какая длина максимальной подстроки с концом в позиции i совпадает с префиксом. Максимальное значение P[i] будет равно |T|, больше получить невозможно из-за разделителя #. Для вывода всех ответов нужно найти все i, что P[i]=|T|, но поскольку это позиция конца подстроки в строке Q, то нужно отнять строку T+# и перейти в начало подстроки. Ответом для всех i будет i-(|T|+1)+(|T|-1) = i-2*|T| для всех P[i]=|T|
Сдать: для сдачи задач необходимо войти в систему
3954
statement