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

Задача . A. Расписание автобусов


Имеются две остановки автобусов A и B, и известно, что в течение дня \(n\) автобусов совершают поездку от A до B. От остановки A до остановки B самым быстрым образом можно доехать за время \(t\), но можно ехать и дольше, при этом автобусы могут произвольным образом обгонять друг друга в процессе следования по маршруту.

На каждой из остановок можно прочитать упорядоченный список моментов времени, когда на эту остановку приходит автобус, обозначим как \(a_1 < a_2 < \ldots < a_n\) список для остановки A и как \(b_1 < b_2 < \ldots < b_n\) список для остановки B. Автобусы всегда отъезжают от остановки A и всегда прибывают на остановку B вовремя, но порядок прибытия автобусов может отличаться от порядка отправления. Будем называть порядок прибытия корректным, если для каждого автобуса время его прибытия хотя бы на \(t\) позже, чем время отправления.

Известно, что для соблюдения расписания автобус, отправляющийся в момент времени \(a_i\), должен приехать не позже, чем в момент времени \(b_{x_i}\), то есть \(x_i\)-м по счету. Иными словами, для каждого \(i\) существует такой корректный порядок прибытия автобусов, где \(i\)-й отправленный автобус прибывает \(x_i\)-м (а остальные — как угодно), но не существует корректного порядка, где \(i\)-й отправленный автобус прибывает \((x_i + 1)\)-м.

Формально, назовем перестановку \(p_1, p_2, \ldots, p_n\) корректной, если \(b_{p_i} \ge a_i + t\) для всех \(i\). Тогда \(x_i\) — максимальное значение \(p_i\) среди всех корректных перестановок.

Вам известны числа \(a_1, a_2, \ldots, a_n\) и \(x_1, x_2, \ldots, x_n\), но не известны времена прибытия автобусов. Найдите какое-нибудь подходящее расписание \(b_1, b_2, \ldots, b_n\), или определите, что такого расписания не существует.

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

В первой строке записаны два числа \(n\) и \(t\) (\(1 \leq n \leq 200\,000\), \(1 \leq t \leq 10^{18}\)) — количество автобусов в расписании на обеих остановках и минимальное возможное время поездки автобуса от А до B.

Во второй строке записаны \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(1 \leq a_1 < a_2 < \ldots < a_n \leq 10^{18}\)), определяющие времена отправления автобусов от остановки A.

В третьей строке записаны \(n\) чисел \(x_1, x_2, \ldots, x_n\) (\(1 \leq x_i \leq n\)), \(i\)-е из которых означает максимально допустимую позицию в расписании автобусов на остановке B, которую мог занять автобус, отъехавший \(i\)-м от остановки A.

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

Если решение существует, в первой строке выведите слово «Yes» (без кавычек).

Во второй строке выведите \(n\) целых чисел \(b_1, b_2, \ldots, b_n\) (\(1 \leq b_1 < b_2 < \ldots < b_n \leq 3 \cdot 10^{18}\)). Можно показать, что если решение существует, то существует и решение, удовлетворяющее данному ограничению на значения \(b_i\). Если правильных ответов несколько, то разрешается вывести любой из них.

Если подходящего расписания не существует, выведите слово «No» (без кавычек) в единственной строке вывода.

Примечание

Рассмотрим первый пример и расписание \(b_1, b_2, \ldots, b_n\) из примера.

Чтобы получить \(x_1 = 2\) можно взять порядок прибытия автобусов \((2, 1, 3)\). Чтобы получить \(x_2 = 2\) и \(x_3 = 3\) можно выбрать порядок прибытия \((1, 2, 3)\). \(x_1\) не равно \(3\), потому что перестановки \((3, 1, 2)\) и \((3, 2, 1)\) (все возможные, в которых \(1\)-й автобус приезжает \(3\)-м по порядку) некорректны (некоторые автобусы приедут слишком рано), по тем же причинам \(x_2\) не равно \(3\).


Примеры
Входные данныеВыходные данные
1 3 10
4 6 8
2 2 3
Yes
16 17 21
2 2 1
1 2
2 1
No

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

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