### Yazdan_ra's blog

By Yazdan_ra, history, 20 months ago, ,

Hi Codeforces !!! i before in contest see 916B - Jamie and Binary Sequence (changed after round) problem. and i tried for solve that. but this problem changed after round. :' (
my code for this problem is in 34328725 . and i sure this is true. :-) i hope you can help me for find bug of my code. but i sure it's true. ^_^

in part ( 1 ) i give input and check "NO" answer.

//

long long int n,k; cin>>n>>k;
if ( __builtin_popcount( n ) > k )
return cout << "No\n" , 0 ;

//

in part ( 2 ) i get number n in binary

//

long long int  num = n ;
string bits = "" ;
while ( num > 0 ) {
bits += to_string( num%2 ) ;
num >>= 1 ;
}

//

in part ( 3 ) i save andis of one's in "bits" on the "vec"

//

vector < int > vec ;
for ( int i=0 ; i<(int)bits.size() ; i++ )
if ( bits[i] == '1' ) vec.push_back( i ) ;

//

and in the last part : i delet 'x' ( element of vec ) and add "x-1" and "x-1" because : ( x << 1 ) = ( (x-1) << 1 ) + ( (x-1) << 1 ) while vec.size() < k

//

while ( sz(vec) > k ) {
int x = vec.back() ;
vec.pop_back() ;
vec.push_back( x-1 ) ;
vec.push_back( x-1 ) ;
}

sort( vec.begin() , vec.end() ) ;
reverse( vec.begin() , vec.end() ) ;
cout << "YES\n" ;
for ( auto e : vec )
cout << e << ' ' ;
return cout << endl , 0 ;

//

and FINISH . ^_^