12183. Помилка передачі


Відправити розв'язок

Бали: 100
Time limit: 4.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Степан надіслав Андрію рядок \(T\), що складається з малих англійських літер. У результаті Андрій отримав рядок \(T′\), що складається з малих англійських літер.

\(T′\) може бути змінено з \(T\). Зокрема, відомо, що виконується точно одна з наступних чотирьох умов.

  • \(T′\) дорівнює \(T\).
  • \(T′\) – це рядок, отриманий шляхом вставки однієї малої англійської літери в одну позицію (можливо, початок і кінець) у \(T\).
  • \(T′\) – це рядок, отриманий видаленням одного символу з \(T\).
  • \(T′\) – це рядок отриманий шляхом зміни одного символу в \(T\) на іншу малу англійську літеру.

Вам надано рядок \(T′\), отриманий Андрієм, і \(N\) рядків \(S_1 ​, S_2 ​ ,…, S_N ​\), які складаються з малих літер англійського алфавсіту. Знайдіть усі рядки серед \(S_1 ​, S_2 ​ ,…, S_N ​\), які можуть дорівнювати рядку \(T\), надісланому Степаном.

Обмеження

  • \(N\) є цілим числом.
  • \(1≤N≤5×10^5\)
  • \(S_i\) ​ і \(T′\) — це рядки довжиною від 1 до \(5×10^5\) включно, які складаються з малих літер англійського алфавіту.
  • Загальна довжина \(S_1 ​, S_2 ​ ,…, S_N\) ​ не перевищує \(5×10^5 \).

Формат вхідних даних

Перший рядок містить ціле число \(N\) та \(T′\).

Наступні  \(N\) рядків містять цілі числа \(S_i\).

Формат вихідних даних

Нехай (\(i_1 ​,i_2 ​ ,…,i_K ​ )\) — послідовність індексів усіх рядків серед \(S_1 ​ , S_2 ​ ,…,S_N ​\), які можуть дорівнювати \(T\) у порядку зростання. Виведіть довжину \(K\) цієї послідовності ц першому рядку та саму послідовність через пропуск у другому рядку.

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

5 ababc
ababc
babc
abacbc
abdbc
abbac

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

4
1 2 3 4

Серед \(S_1 ​, S_2 ​ ,…, S_5\) ​ рядки, які можуть дорівнювати \(T\), є \(S_1 ​ , S_2 ​ , S_3 ​ , S_4 ​ \), як пояснюється нижче.

  • \(S_1\) ​ може дорівнювати \(T\), оскільки \(T′ = ababc\) дорівнює \(S_1 ​ = ababc\).
  • \(S_2\) ​ може дорівнювати \(T\), тому що \(T′ = ababc\) отримується шляхом вставки літери 'a' на початку \(S_2 ​ = babc\).
  • \(S_3\) ​ може дорівнювати \(T\), оскільки \(T′ = ababc\) отримується видаленням четвертого символу 'c' із \(S_3 ​ = abacbc\).
  • \(S_4\) ​ може дорівнювати \(T\), оскільки \(T′ = ababc\) отримується шляхом зміни третього символу 'd' у \(S_4 ​ = abdbc\) на 'b'.
  • \(S_5\) ​ не може дорівнювати \(T\), тому що якщо ми візьмемо \(S_5 ​ = abbac\) як \(T\), то \(T′ = ababc\) не задовольняє жодну з чотирьох умов у постановці задачі.

Коментарі

Ще немає коментарів.