#include <cassert>
#include <algorithm>
#include <iostream>
#include <vector>
void filter(std::vector<int>& v, const std::vector<bool>& b)
{
assert(v.size() == b.size());
auto it = b.begin();
v.erase(std::remove_if(v.begin(), v.end(), [&](int) { return *it++; }), v.end());
}
int main()
{
std::vector<int> v = {0, 1, 2, 3, 4, 5, 6};
std::vector<bool> b = {true, true, false, false, true, false, true};
filter(v, b);
for (auto i : v) {
std::cout << " " << i;
}
}
I2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnZvaWQgZmlsdGVyKHN0ZDo6dmVjdG9yPGludD4mIHYsIGNvbnN0IHN0ZDo6dmVjdG9yPGJvb2w+JiBiKQp7CiAgICBhc3NlcnQodi5zaXplKCkgPT0gYi5zaXplKCkpOwogICAgYXV0byBpdCA9IGIuYmVnaW4oKTsKICAgIHYuZXJhc2Uoc3RkOjpyZW1vdmVfaWYodi5iZWdpbigpLCB2LmVuZCgpLCBbJl0oaW50KSB7IHJldHVybiAqaXQrKzsgfSksIHYuZW5kKCkpOwp9CgoKCmludCBtYWluKCkKewogICAgc3RkOjp2ZWN0b3I8aW50PiB2ID0gezAsIDEsIDIsIDMsIDQsIDUsIDZ9OwogICAgc3RkOjp2ZWN0b3I8Ym9vbD4gYiA9IHt0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlfTsKICAgIAogICAgZmlsdGVyKHYsIGIpOwogICAgZm9yIChhdXRvIGkgOiB2KSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICIgIiA8PCBpOwogICAgfQogICAgCn0K