C. В поисках палиндрома ограничение по времени на тест1 секунда
ограничение по памяти на тест256 мегабайт
вводстандартный ввод
выводстандартный вывод
У друга Поликарпа завтра день рождения. Недолго думая, Поликарп решил подарить ему палиндром, состоящий из строчных букв латинского алфавита. Поликарп знает, что его друг любит некоторые буквы, в количестве K штук. Поликарпу очень важен его друг, поэтому он хочет подарить ему самый красивый палиндром, содержащий хотя бы одну его любимую букву. Будем считать, что один палиндром красивее другого, если в нем есть любимая буква, стоящая в алфавите позже, чем все любимые буквы второго палиндрома.
В магазине палиндромов продавец выдал Поликарпу строку S длиной в N символов, из которой он может выбрать любую подстроку, являющеюся палиндромом. Гарантируется, что в данной строке содержится хотя бы один палиндром.
Поликарпу найти самый лучший палиндром. Если в строке S нет палиндромов, содержащих любимые буквы, то выведите любой палиндром, который является подстрокой S.
Определение: Палиндром — строка, одинаково читающаяся в обоих направлениях.
Входные данные
Первая строка содержит два целых числа N и K (1≤N≤105,1≤K≤26) — длину строки S и количество любимых букв.
Вторая строка содержит строку, состоящую из K строчных латинских различных букв — любимые буквы друга Поликарпа.
Третья строка содержит строку S, состоящую из N строчных латинских букв.
Выходные данные
Выведите одну единственную строку — самый лучший палиндром, который можно получить из строки S.
Если существует несколько палиндромов, удовлетворяющих условию, то выведите любой из них.
Система оценки
Подзадачи Ограничения Необходимые подзадачи Тип проверки
1 1≤N≤105 , 1≤K≤26 100 — Каждый тест
Примеры
входные данныеСкопировать
4 1
g
gmgi
выходные данныеСкопировать
gmg
входные данныеСкопировать
8 3
bcn
ianfffnb
выходные данныеСкопировать
nfffn
входные данныеСкопировать
16 7
codevka
cejecgaagdeakvka
выходные данныеСкопировать
akvka
Uses Crt;
var
a,c,b:integer;
begin
ClrScr;
repeat
writeln('INPUT 3-x znachoe');
readln(b);
until (b>=100)and(b<=999);
a:=b div 100+(b div 10)mod 10;
c:=(b div 10)mod 10+b mod 10;
if a<c then
writeln(a,c)
else
writeln(c,a);
Readkey;
end.
Uses Crt;
var
a,c,b:integer;
begin
ClrScr;
repeat
writeln('INPUT 3-x znachoe');
readln(b);
until (b>=100)and(b<=999);
a:=b div 100+(b div 10)mod 10;
c:=(b div 10)mod 10+b mod 10;
if a<c then
writeln(a,c)
else
writeln(c,a);
Readkey;
end.