ACM_Notebook_new

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub ngthanhtrung23/ACM_Notebook_new

:warning: Misc/bitmask_utils.h

Code

// bitmask utils {{{
inline uint64_t two(int b) {
    return 1ULL << b;
}
inline uint64_t flip_bit(uint64_t mask, int b) {
    return mask ^ two(b);
}
inline int get_bit(uint64_t mask, int b) {
    return (mask >> b) & 1ULL;
}
inline uint64_t set_bit(uint64_t mask, int b, int new_val) {
    return mask + (new_val - get_bit(mask, b)) * two(b);
}
inline int popcount(uint64_t mask) {
    return __builtin_popcountll(mask);
}
inline int ctz(uint64_t mask) {
    return __builtin_ctzll(mask);
}
template<typename F>
inline void for_each_submask(uint64_t mask, F f) {
    for (uint64_t submask = mask; submask > 0; submask = (submask - 1) & mask) {
        f(submask);
    }
}
// }}}
#line 1 "Misc/bitmask_utils.h"
// bitmask utils {{{
inline uint64_t two(int b) {
    return 1ULL << b;
}
inline uint64_t flip_bit(uint64_t mask, int b) {
    return mask ^ two(b);
}
inline int get_bit(uint64_t mask, int b) {
    return (mask >> b) & 1ULL;
}
inline uint64_t set_bit(uint64_t mask, int b, int new_val) {
    return mask + (new_val - get_bit(mask, b)) * two(b);
}
inline int popcount(uint64_t mask) {
    return __builtin_popcountll(mask);
}
inline int ctz(uint64_t mask) {
    return __builtin_ctzll(mask);
}
template<typename F>
inline void for_each_submask(uint64_t mask, F f) {
    for (uint64_t submask = mask; submask > 0; submask = (submask - 1) & mask) {
        f(submask);
    }
}
// }}}
Back to top page