Codeforces Round 707 (Div. 1, по задачам Открытой олимпиады школьников по программированию) |
---|
Закончено |
В доме Кроша стояло $$$n$$$ шкафов в линию, $$$i$$$-й шкаф имел высоту $$$h_i$$$. Недавно Крош переехал, но не смог перевезти с собой те самые шкафы. Ему хочется купить $$$n$$$ новых шкафов, чтобы те были как можно больше похожи на старые.
Крош не помнит конкретные высоты шкафов, но для каждой тройки подряд идущих шкафов он знает разность высот между самым высоким и самым низким из тройки. Иначе говоря, если последовательность высот шкафов была $$$h_1, h_2, \ldots, h_n$$$, то Крош помнит величины $$$w_i = \max(h_{i}, h_{i + 1}, h_{i + 2}) - \min(h_{i}, h_{i + 1}, h_{i + 2})$$$ для $$$1 \leq i \leq n - 2$$$.
В новый дом Крош хочет купить $$$n$$$ шкафов, так чтобы всё было как прежде: все значения $$$w_i$$$ должны сохраниться. Помогите Крошу понять, какие шкафы ему следует купить и в какой последовательности поставить, или определите, что он что-то перепутал, и такой последовательности шкафов не может быть.
В первой строке даны два целых числа $$$n$$$ и $$$C$$$ ($$$3 \leq n \leq 10^6$$$, $$$0 \leq C \leq 10^{12}$$$) — количество шкафов и ограничение на $$$w_i$$$.
Вторая строка содержит $$$n - 2$$$ целых числа $$$w_1, w_2, \ldots, w_{n - 2}$$$ ($$$0 \leq w_i \leq C$$$) — высоты шкафов слева направо.
Если не существует возможности купить $$$n$$$ шкафов, удовлетворяющих условиям, в единственной строке выведите «No».
Иначе в первой строке выведите «Yes», после чего во второй строке выведите $$$n$$$ целых чисел $$$h'_1, h'_2, \ldots, h'_n$$$ ($$$0 \le h'_i \le 10^{18}$$$) — высоты шкафов для покупки.
Можно показать, что если существует какое-то решение, то оно существует и при заданных ограничениях на высоты.
Если корректных решений несколько, выведите любое из них.
7 20 4 8 12 16 20
YES 4 8 8 16 20 4 0
11 10 5 7 2 3 4 5 2 1 8
YES 1 1 6 8 6 5 2 0 0 1 8
6 9 1 6 9 0
NO
Рассмотрим первый пример:
Также корректным был бы, например, ответ с высотами: $$$0, 1, 4, 9, 16, 25, 36$$$
Название |
---|