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

Задача . B. Расписание смены


В известной на всю страну Весенней компьютерной школе скоро начнется новая смена, и в связи с этим весь дружный состав преподавателей и кураторов начал составлять ее расписание. В процессе обсуждения они пришли к расписанию \(s\), которое может быть представлено в виде бинарной строки, в которой на \(i\)-й позиции стоит «1», если ученики в \(i\)-й день пишут контест, и «0», если отдыхают.

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

Сможете ли вы переставить порядок дней в расписании оптимальным образом?

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

Первая строка содержит строку \(s\) (\(1 \leqslant |s| \leqslant 500\,000\)), задающую текущий проект расписания смены.

Вторая строка содержит строку \(t\) (\(1 \leqslant |t| \leqslant 500\,000\)), задающую оптимальное расписание согласно Глебу.

Строки \(s\) и \(t\) состоят только из символов «0» и «1».

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

В единственной строке выведите расписание, количество вхождений \(t\) как подстроки в которое максимально. Выведенное расписание должно состоять только из «0» и «1», причём количество нулей должно совпадать с количеством нулей в \(s\), а количество единиц — с количеством единиц в \(s\).

Если существует несколько оптимальных расписаний, выведите любое из них.

Примечание

В первом примере два вхождения, начинающихся с первой и четвертой позиции.

Во втором примере всего одно вхождение, и оно начинается с третьей позиции. Заметим также, что ответ не единственен — например, самый первый день (являющийся выходным) можно переместить на последнюю позицию, и кол-во вхождений \(t\) не изменится.

В третьем примере добиться даже одного вхождения не получится.


Примеры
Входные данныеВыходные данные
1 101101
110
110110
2 10010110
100011
01100011
3 10
11100
01

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

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