Задача №114897. Родные просторы
Вы играете на смартфоне в игру «Родные просторы», в которой управляющий Остап помогает помещику восстановить отцовский дом. Игра происходит следующим образом.
Дана последовательность из \(n\) кристаллов, расположенных в один ряд слева направо. Каждый кристалл относится к одному из \(k\) видов, обозначенных первыми \(k\) английскими буквами. Таким образом, последовательность кристаллов записывается строкой английских букв.
За один ход игры можно удалить из последовательности один кристалл. Цель игрока — получить в результате применения разрешенных видов удалений лексикографически минимально возможную строку.
Разрешённые виды удаления кристаллов заданы таблицей \(A\) размера \(k\times k\) из нулей и единиц. Если \(A_{ij}=1\), то разрешается удалить кристалл вида \(j\), если непосредственно слева от него находится кристалл вида \(i\). Данные действия можно выполнять в любом порядке.
Напомним, что строка \(x\) лексикографически меньше строки \(y\), если выполнено одно из двух условий:
-
[leftmargin=1.25cm,noitemsep,topsep=0pt]
- существует такая позиция символа \(m\), присутствующая в обеих строках, что до \(m\)-го символа строки совпадают, а \(m\)-й символ строки \(x\) меньше \(m\)-го символа \(y\),
- строка \(x\) является строгим префиксом \(y\) (то есть получается отбрасыванием одного или больше символов с конца строки \(y\)).
В первой строке даны два целых числа \(k\) и \(n\) (\(1 \le k \le 26\), \(1 \le n \le 500\,000\)) — количество видов кристаллов и длина исходной последовательности кристаллов.
В следующих \(k\) строках задана таблица \(A\), \(i\)-я строка содержит ровно \(k\) символов \(0\) или \(1\). Символ в \(i\)-й строке на \(j\)-й позиции равен \(A_{ij}\).
В последней строке записаны \(n\) строчных английских букв, задающие исходную последовательность кристаллов. Гарантируется, что в строке встречаются только первые \(k\) букв английского алфавита, \(i\)-я по счёту буква английского алфавита обозначает \(i\)-й вид кристаллов.
Выведите лексикографически минимальную строку, которую можно получить из исходной строки разрешёнными действиям.
Ограничения | |||||
Подзадача | Баллы | \(n\) | \(k\) | Необходимые подзадачи | Информация о проверке |
1 | 10 | \(n \le 20\) | \(k \le 26\) | У | первая ошибка |
2 | 12 | \(n \le 50\) | \(k \le 5\) | У | первая ошибка |
3 | 16 | \(n \le 300\) | \(k \le 5\) | У, 2 | первая ошибка |
4 | 17 | \(n \le 500\) | \(k \le 26\) | У, 1–3 | первая ошибка |
5 | 10 | \(n \le 2\,000\) | \(k \le 26\) | У, 1–4 | первая ошибка |
6 | 9 | \(n \le 10\,000\) | \(k \le 26\) | У, 1–5 | первая ошибка |
7 | 8 | \(n \le 100\,000\) | \(k \le 26\) | У, 1–6 | первая ошибка |
8 | 11 | \(n \le 500\,000\) | \(k \le 2\) | первая ошибка | |
9 | 7 | \(n \le 500\,000\) | \(k \le 26\) | У, 1–8 | первая ошибка |
3 7 010 001 100 abacaba
aac
3 5 010 001 100 bcacb
bacb