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

Задача . C. Степени двойки


Положительное целое число \(x\) называется степенью двойки, если его можно представить как \(x = 2^y\), где \(y\) — неотрицательное целое число. Иными словами, степени двойки — это числа \(1, 2, 4, 8, 16, \dots\).

Вам даны два положительных целых числа \(n\) и \(k\). Представьте \(n\) как сумму ровно \(k\) степеней двойки.

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

В единственной строке входных данных заданы два числа \(n\) и \(k\) (\(1 \le n \le 10^9\), \(1 \le k \le 2 \cdot 10^5\)).

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

Если невозможно представить \(n\) как сумму \(k\) степеней двойки, выведите NO.

Иначе выведите YES, а затем — \(k\) положительных целых чисел \(b_1, b_2, \dots, b_k\), таких, что \(b_i\) являются степенями двойки, и \(\sum \limits_{i = 1}^{k} b_i = n\). Если ответов несколько, выведите любой из них.


Примеры
Входные данныеВыходные данные
1 9 4
YES
1 2 2 4
2 8 1
YES
8
3 5 1
NO
4 3 7
NO

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

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