В общем вот сама задача :
http://codeforces.me/contest/149/problem/E
А вот разбор к ней ...
Её то саму я решил , но наверняка мое решение будет выдавать TL...Да...и хочется все таки через способ выше указанный, вернее ниже :) Будем решать задачу отдельно для каждой из m строк. Итак, пусть у нас есть строка p, ее длина l, и нам нужно проверить, может ли марсианин ее увидеть.
Введем дополнительные массивы: пусть pref[i] – минимальная позиция в s начала вхождения префикса строки p длиной ровноi, а также пусть suff[j] – максимальная позиция в s конца вхождения суффикса строки p длиной ровно j.
Нетрудно понять, что марсианин сможет увидеть p, если существует такое i, что suff[l - i] ≥ pref[i] + l–1.
Как подсчитать массивы? Для массива pref достаточно найти Z-функцию строки p#s, а для массива suff – Z-функцию строки r(p)#r(s), где r(t) означает перевернутую строку t. Используя массив Z-функций значения массивов suff и pref подсчитать тривиально.
Собственно что такое з функция и т.п я знаю )
Единственное о чем я бы хотел вас , попросить ... Это пояснить как ...вернее что будет происходить на разных этапах алгоритма....Ну если на вводе будет первый пример из тестов:))Я уж извиняюсь , просто программированием как таковым занимаюсь с апреля ... ну и сразу на спортивное перешел )Заранее спс )