Олимпиадный тренинг

Задача . B. Длинное число


Вам дано длинное десятичное число \(a\), состоящее из \(n\) цифр от \(1\) до \(9\). Также мы определили функцию \(f\), которая отображает каждую цифру от \(1\) до \(9\) в какую-то (возможно, ту же самую) цифру от \(1\) до \(9\).

Вы можете применить следующую операцию не более одного раза: выбрать непустой непрерывный подотрезок цифр из \(a\), и заменить каждую цифру \(x\) из этого подотрезка на \(f(x)\). Например, если \(a = 1337\), \(f(1) = 1\), \(f(3) = 5\), \(f(7) = 3\), и вы замените подотрезок из трех последних цифр, результатом будет число \(1553\).

Какое максимальное число вы можете получить, если примените эту операцию не более одного раза?

Входные данные

В первой строке записано одно целое число \(n\) (\(1 \le n \le 2 \cdot 10^5\)) — количество цифр в \(a\).

Во второй строке записана последовательность из \(n\) символов — число \(a\). Каждый символ — это цифра от \(1\) до \(9\).

В третьей строке заданы ровно \(9\) целых чисел \(f(1)\), \(f(2)\), ..., \(f(9)\) (\(1 \le f(i) \le 9\)).

Выходные данные

Выведите максимальное число, которое вы можете получить, применив операцию, описанную в условии, не более одного раза.


Примеры
Входные данныеВыходные данные
1 4
1337
1 2 5 4 6 6 3 1 9
1557
2 5
11111
9 8 7 6 5 4 3 2 1
99999
3 2
33
1 1 1 1 1 1 1 1 1
33

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя