## Summary

In this post, I will introduce problems related to bit manipulation. Before that, you may want to learn the `std::bitset<>`

class template.

## Detials

#### LC 1386. Cinema Seat Allocation

The problem is not difficult. But it is tricky to write a clean code. The hint is that all valid patterns can be presented by the predefined bit-sets.

```
auto const p1 = bitset<10>(0b011'1100'000);
auto const p2 = bitset<10>(0b000'1111'000);
auto const p3 = bitset<10>(0b000'0011'110);
```

#### LC 1452. People Whose List of Favorite Companies Is Not a Subset of Another List

Bitsets support fast intersect and union of unordered sets.

```
// intersect
a & b
// union
a | b
// check if a is in b
(a & b) == a
```