Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define endl "\n"
- using namespace std;
- int main() {
- int n, k;
- cin >> n >> k;
- vector<int> v;
- if(n < k) cout << "NO";
- else {
- int x = log2(n) + 1, j=0;
- // J = Number of 1 in binary represention of n
- if(n & 1) j=1;
- for(int i = 1; i<x; i++) {
- if(n & (1 << i)) {
- j++;
- v.push_back(1 << i);
- }
- }
- if(k < j) cout << "NO";
- else {
- cout << "YES\n";
- for(; j<k; j++) {
- int num = *(v.end() - 1);
- if( num / 2 == 1 ) {
- v.pop_back();
- } else {
- v.pop_back();
- v.push_back(num/2);
- v.push_back(num/2);
- }
- }
- int c = 0;
- for(auto u:v) {
- printf("%d ",u);
- c++;
- }
- for(int i=1; i<=(k-c); i++) printf("1 ");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement