printРабочее место участника

printЗадачи

1673. Игра

Ограничения: время – 200ms/500ms, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Есть `N` кучек камней. Двое играющих поочередно берут камни из кучек. Во время хода можно взять любое количество камней из не более чем `K` кучек, и по крайней мере один камень из какой-то кучки должен быть взят. Выигрывает тот, кто возьмет последний камень.
Напишите программу, которая для заданного распределения камней по кучкам определяет, может ли игрок, делающий первый ход, выиграть и какой ход он должен сделать, чтобы выиграть.
Первая строка ввода содержит два целых числа `N` и `K` (`1\ ≤\ K\ <\ N\ ≤\ 100`). Вторая строка содержит `N` целых чисел в диапазоне от 1 до 10000 – количество камней в кучках.
Вывести в первой строке сообщение "YES", если начинающий игрок может выиграть, иначе сообщение "NO". Во второй строке в случае положительного ответа вывести `N` целых чисел – сколько камней нужно взять из соответствующей кучки. Можно вывести любой вариант выигрышного хода.

Пример ввода 1

4 2
10 5 10 15

Пример вывода 1

YES
0 5 0 5

Пример ввода 2

2 1
10 10

Пример вывода 2

NO
loading