14115: Знайди і заміни-Find and Replace-USACO2023JanGold


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

Бали: 100 (partial)
Time limit: 2.0s
Memory limit: 500M

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

Бесі працює у текстовому редакторі miV! Його функція "знайти та замінити" дозволяє їй замінити всі входження маленької латинської літери \(c\) на непорожній рядок із маленьких латинських літер \(s\). Наприклад, дано рядок "\(\texttt{ball}\)". Якщо Бесі вибере в якості \(c\) символ 'l' а в якості рядка \(s\) "\(\texttt{na}\)", то цей рядок трансформується в "\(\texttt{banana}\)".

Бесі починає з рядка "\(\texttt{a}\)" і трансформує його використовуючи деяку кількість операцій «знайти та замінити» та отримує фінальний рядок \(S\). Оскільки \(S\) може бути великою, вона хоче дізнатися за заданими \(l\) і \(r\) \(1\le l\le r\le \min(|S|,10^{18})\), чому одно \(S_{l\dots r}\) - підрядок S з позиції \(l\) до позицієї \(r\) включно.

Гарантується, що сума \(|s|\) за всіма операціями не більше \(2\cdot 10^5\), і що \( r-l + 1 \le 2 \cdot 10 ^ 5 \).

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

Перший рядок містить \(l\), \(r\) та кількість операцій.

Кожен з наступних рядків описує одну операцію і містить \(c\) та \(s\) для цієї операції. Усі символи в інтервалі від 'a' до 'z'.

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

Виведіть рядок \(S_{l\dots r}\).

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

3 8 4
a ab
a bc
c de
b bbb

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

bdebbb

Вихідний рядок трансформувався таким чином: \(\texttt{a} \rightarrow \texttt{ab} \rightarrow \texttt{bcb} \rightarrow \texttt{bdeb} \rightarrow \texttt{bbbdebbb}\)

ОЦІНЮВАННЯ:

  • Тести 2-7: \(\sum |s|, r-l+1\le 2000\)
  • Тести 8-15: Немає додаткових обмежень.

Коментарі

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