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

Задача . C. От S к T


У вас есть три строки \(s\), \(t\) и \(p\), состоящие из строчных букв латинского алфавита. Вы можете выполнять любое количество (возможно, нулевое) операций над этими строками.

Каждая операция выглядит следующим образом: вы выбираете любой символ из строки \(p\), удаляете его из \(p\) и вставляете в любую позицию строки \(s\) (вы можете вставить этот символ куда захотите: в начало \(s\), в конец или между любыми двумя подряд идущими символами).

Например, если \(p\) — это aba, и \(s\) — это de, тогда возможны следующие варианты (символ, удаленный из \(p\) и вставленный в \(s\), выделен жирным шрифтом):

  • aba \(\rightarrow\) ba, de \(\rightarrow\) ade;
  • aba \(\rightarrow\) ba, de \(\rightarrow\) dae;
  • aba \(\rightarrow\) ba, de \(\rightarrow\) dea;
  • aba \(\rightarrow\) aa, de \(\rightarrow\) bde;
  • aba \(\rightarrow\) aa, de \(\rightarrow\) dbe;
  • aba \(\rightarrow\) aa, de \(\rightarrow\) deb;
  • aba \(\rightarrow\) ab, de \(\rightarrow\) ade;
  • aba \(\rightarrow\) ab, de \(\rightarrow\) dae;
  • aba \(\rightarrow\) ab, de \(\rightarrow\) dea;

Вам нужно выполнить несколько (возможно, ноль) операций так, чтобы строка \(s\) стала равна строке \(t\). Определите, возможно ли это.

Обратите внимание, что вам нужно ответить на \(q\) независимых запросов.

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

Первая строка содержит целое число \(q\) (\(1 \le q \le 100\)) — количество запросов. Каждый запрос содержит три строки.

Первая строка каждого запроса содержит строку \(s\) (\(1 \le |s| \le 100\)), состоящую из строчных букв латинского алфавита.

Вторая строка каждого запроса содержит строку \(t\) (\(1 \le |t| \le 100\)), состоящую из строчных букв латинского алфавита

Третья строка каждого запроса содержит строку \(p\) (\(1 \le |p| \le 100\)), состоящую из строчных букв латинского алфавита.

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

Для каждого запросы выведите YES, если возможно превратить строку \(s\) в строку \(t\), и NO в противном случае.

Ответ можете выводить в любом регистре (например, строки yEs, yes, Yes и YES будут распознаны как положительный ответ на запрос).

Примечание

В первом запросе возможна следующая последовательность операций:

  1. \(s = \) ab, \(t = \) acxb, \(p = \) cax;
  2. \(s = \) acb, \(t = \) acxb, \(p = \) ax;
  3. \(s = \) acxb, \(t = \) acxb, \(p = \) a.

Во втрором запросе возможна следующая последовательность операций:

  1. \(s = \) a, \(t = \) aaaa, \(p = \) aaabbcc;
  2. \(s = \) aa, \(t = \) aaaa, \(p = \) aabbcc;
  3. \(s = \) aaa, \(t = \) aaaa, \(p = \) abbcc;
  4. \(s = \) aaaa, \(t = \) aaaa, \(p = \) bbcc.

Примеры
Входные данныеВыходные данные
1 4
ab
acxb
cax
a
aaaa
aaabbcc
a
aaaa
aabbcc
ab
baaa
aaaaa
YES
YES
NO
NO

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

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