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

Задача . A. Минимизируй строку


Кузнецов любит искусство, поэзию и музыку. И строки, состоящие из строчных латинских букв.

Недавно Кузнецов нашел две строки \(a\) и \(b\) длины \(n\) и \(m\) соответственно. Они состоят из строчных английских букв и ни один символ не содержится одновременно в обеих строках.

Пусть еще одна строка \(c\) изначально пуста. Кузнецов может делать следующие два типа операций:

  • Выбрать любой символ из строки \(a\), удалить его из строки \(a\) и добавить в конец строки \(c\).
  • Выбрать любой символ из строки \(b\), удалить его из строки \(b\) и добавить в конец строки \(c\).

Однако Кузнецов не может сделать более \(k\) операций одного типа подряд. Кузнецов должен выполнять операции до того момента, как строка \(a\) либо строка \(b\) станет пустой. Какое лексикографически наименьшее значение \(c\) возможное после того, как Кузнецов закончит выполнение операций?

Строка \(x\) лексикографически меньше строки \(y\) тогда и только тогда, когда выполняется одно из следующих условий:

  • \(x\) является префиксом \(y\), но \(x \neq y\);
  • в первой позиции, где \(x\) и \(y\) различаются, в строке \(x\) находится буква, которая стоит в алфавите раньше, чем соответствующая буква в \(y\).
Входные данные

Во входных данных находятся несколько наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \leq t \leq 100\))  — количество наборов входных данных. Далее следуют наборы входных данных.

В первой строке каждого набора задано три целых числа \(n\), \(m\) и \(k\) (\(1\leq n,m,k \leq 100\)) — параметры из условия.

Во второй строке каждого набора задана строка \(a\) длины \(n\).

Во третьей строке каждого набора задана строка \(b\) длины \(m\).

Строки состоят из строчных букв латинского алфавита. Гарантируется, что ни одна буква не встречается одновременно в строках \(a\) и \(b\).

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

Для каждого набора входных данных выведите одну строку \(c\) — ответ на задачу.

Примечание

В первом наборе входных данных оптимально взять две буквы «a» из строки \(a\) и добавить их к строке \(c\). Теперь запрещается выполнять операцию со строкой \(a\), следовательно, необходимо взять один символ «b» из строки \(b\). Следуя этой логике, мы получаем, что \(c\) становится «aabaabaa» в момент, когда строка \(a\) становится пуста.

Во втором наборе входных данных оптимально взять как можно больше «a» из строки \(a\), а затем взять как можно больше «b» из строки \(b\). В конце мы берем два символа «c» из строки \(a\), делая ее пустой.


Примеры
Входные данныеВыходные данные
1 3
6 4 2
aaaaaa
bbbb
5 9 3
caaca
bedededeb
7 7 1
noskill
wxhtzdy
aabaabaa
aaabbcc
dihktlwlxnyoz

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

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