Codeforces Round 501 (Div. 3) |
---|
Закончено |
В ряд расположено $$$n$$$ домов. Они пронумерованы от $$$1$$$ до $$$n$$$ в порядке слева направо. Изначально вы находитесь у дома $$$1$$$.
Вы хотите совершить $$$k$$$ переходов между домами. Переходом является ходьба от текущего дома к другому дому. Вы не можете стоять на месте (то есть во время каждого перехода другой дом должен отличаться от текущего). Если вы идете от дома $$$x$$$ до дома $$$y$$$, дистанция, которую вы прошли, увеличивается на $$$|x-y|$$$ единиц, где $$$|a|$$$ — абсолютная величина (модуль числа) $$$a$$$. Разрешается посещать один и тот же дом несколько раз (но нельзя посещать один и тот же дом два раза подряд).
Ваша задача — пройти суммарно ровно $$$s$$$ единиц дистанции.
Если это невозможно, выведите «NO». Иначе выведите «YES» и один из возможных способов сделать это. Помните, что вы должны совершить ровно $$$k$$$ переходов.
Первая строка входных данных содержит три целых числа $$$n$$$, $$$k$$$, $$$s$$$ ($$$2 \le n \le 10^9$$$, $$$1 \le k \le 2 \cdot 10^5$$$, $$$1 \le s \le 10^{18}$$$) — количество домов, количество переходов и суммарная дистанция, которую вы должны пройти.
Если невозможно совершить ровно $$$k$$$ переходов с суммарной пройденной дистанцией, равной $$$s$$$, выведите «NO».
Иначе выведите «YES» в первой строке и затем выведите ровно $$$k$$$ целых чисел $$$h_i$$$ ($$$1 \le h_i \le n$$$) во второй строке, где $$$h_i$$$ — дом, к которому вы переходите на $$$i$$$-м шаге.
Для каждого $$$j$$$ от $$$1$$$ до $$$k-1$$$ должно выполняться следующее условие: $$$h_j \ne h_{j + 1}$$$. Также должно выполняться $$$h_1 \ne 1$$$.
10 2 15
YES
10 4
10 9 45
YES
10 1 10 1 2 1 2 1 6
10 9 81
YES
10 1 10 1 10 1 10 1 10
10 9 82
NO
Название |
---|