3-й этап Республиканской олимпиады по информатике 2021-2022, 2 тура
Задача C. Восстановление строки
Ограничение по времени:
3 секунды
Ограничение по памяти:
256 мегабайт
Вам дана строка s длины n, состоящая из строчных латинских букв и символов `?'. Также, вам даны m условий. Каждое условие описывается тремя целыми числами l1, l2 и x, которые означают что подстрока (sl1…sl1+x−1) должна быть равна подстроке (sl2…sl2+x−1). Вам нужно заменить каждый символ `?' на строчную латинскую букву так чтобы выполнялись все m условия. Среди всех таких строк, найдите лексикографически минимальную. Строка a лексикографический меньше строки b, если
- либо первые k символов этих строк совпадают, а k+1-й символ в a алфавитном порядке идет раньше k+1-го символа строки b. Например, abcdef<abdaaaa, так как первые два символа совпадают, а третья буква первой строки(c) в алфавитном порядке идет раньше третьей буквы второй строки(d).
- либо строка a является префиксом строки b. Например, abc<abcde.
Формат входного файла
В первой строке находится одно целое число n(1<=n<=300000).
Во второй строке находится строка s, состоящая из n строчных латинских букв и символов `?'.
В третьей строке находится одно целое число m(1<=m<=300000).
В следующих m строках записаны по три целых числа l1, l2 и x (1<=l1,l2<=n−x+1), означающие что подстрока (sl1…sl1+x−1) равна подстроке (sl2…sl2+x−1).
Формат выходного файла
Выведите лексикографически минимальную строку, которая удовлетворяет всем условиям, либо −1, если такой строки не существует.
Примеры:
Вход 10 a?b?b???b? 3 1 4 3 7 9 2 3 10 1Ответ
abbabbbbbbВход
6 a????b 5 1 2 1 2 3 1 3 4 1 4 5 1 5 6 1Ответ
-1( Narkhan Kamzabek )
Комментарий/решение:
Возможно, что при неправильном наборе формул, они будут
доредактированы модератором. При этом содержание не будет меняться.