#include <iostream>
#include <vector>
// preinc
std::vector< bool >& operator++( std::vector<bool>& v )
{
for ( auto e : v )
if ( e = !e )
break;
return v;
}
// postinc
std::vector< bool > operator++( std::vector<bool>& v, int )
{
auto t { v };
operator++( v );
return t;
}
// insert
std::ostream& operator<<( std::ostream& os, const std::vector< bool > v )
{
for ( std::vector< bool >::const_reverse_iterator ci = v.rbegin(); ci != v.rend(); ++ci )
os << *ci ? '1' : '0';
return os;
}
int main()
{
std::vector< bool > b {0,0,0,0};
for ( int i = 0; i < 16; ++i )
{
std::cout << b << std::endl;
++b;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKLy8gcHJlaW5jCnN0ZDo6dmVjdG9yPCBib29sID4mIG9wZXJhdG9yKysoIHN0ZDo6dmVjdG9yPGJvb2w+JiB2ICkKewogIGZvciAoIGF1dG8gZSA6IHYgKQogICAgaWYgKCBlID0gIWUgKQogICAgICBicmVhazsKICByZXR1cm4gdjsKfQoKLy8gcG9zdGluYwpzdGQ6OnZlY3RvcjwgYm9vbCA+IG9wZXJhdG9yKysoIHN0ZDo6dmVjdG9yPGJvb2w+JiB2LCBpbnQgKQp7CiAgYXV0byB0IHsgdiB9OwogIG9wZXJhdG9yKysoIHYgKTsKICByZXR1cm4gdDsKfQoKLy8gaW5zZXJ0CnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qgc3RkOjp2ZWN0b3I8IGJvb2wgPiB2ICkKewogIGZvciAoIHN0ZDo6dmVjdG9yPCBib29sID46OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY2kgPSB2LnJiZWdpbigpOyBjaSAhPSB2LnJlbmQoKTsgKytjaSApCiAgICBvcyA8PCAqY2kgPyAnMScgOiAnMCc7CiAgcmV0dXJuIG9zOwp9CgppbnQgbWFpbigpCnsKICBzdGQ6OnZlY3RvcjwgYm9vbCA+IGIgezAsMCwwLDB9OwogIGZvciAoIGludCBpID0gMDsgaSA8IDE2OyArK2kgKQogIHsKICAgIHN0ZDo6Y291dCA8PCBiIDw8IHN0ZDo6ZW5kbDsKICAgICsrYjsKICB9CiAgCiAgcmV0dXJuIDA7Cn0=