#include <iostream>
#include <vector>
#include <unordered_set>
#include <algorithm>
void removeAll_unordered( std::vector<int> &a, const std::vector<int> &b )
{
auto end = std::remove_if( a.begin(), a.end(),
[set = std::unordered_set<int>( b.begin(), b.end() )]( int i ) {
return set.count( i );
} );
a.erase( end, a.end() );
}
int main() {
std::vector<int> a = { 5, 7, 14, 0, 6, 2, 9, 11, 3 };
std::vector<int> b = { 6, 4, 3, 10, 9, 15, 7 };
removeAll_unordered( a, b );
for( auto i : a ) std::cout << i << " ";
std::cout << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnZvaWQgcmVtb3ZlQWxsX3Vub3JkZXJlZCggc3RkOjp2ZWN0b3I8aW50PiAmYSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiAmYiApCnsKICAgICBhdXRvIGVuZCA9IHN0ZDo6cmVtb3ZlX2lmKCBhLmJlZ2luKCksIGEuZW5kKCksIAogICAgICAgICBbc2V0ID0gc3RkOjp1bm9yZGVyZWRfc2V0PGludD4oIGIuYmVnaW4oKSwgYi5lbmQoKSApXSggaW50IGkgKSB7CiAgICAgCXJldHVybiBzZXQuY291bnQoIGkgKTsKICAgICB9ICk7CiAgICAgYS5lcmFzZSggZW5kLCBhLmVuZCgpICk7Cn0KCmludCBtYWluKCkgewogICAgc3RkOjp2ZWN0b3I8aW50PiBhID0geyA1LCA3LCAxNCwgMCwgNiwgMiwgOSwgMTEsIDMgfTsKICAgIHN0ZDo6dmVjdG9yPGludD4gYiA9IHsgNiwgNCwgMywgMTAsIDksIDE1LCA3IH07CiAgICByZW1vdmVBbGxfdW5vcmRlcmVkKCBhLCBiICk7CiAgICBmb3IoIGF1dG8gaSA6IGEgKSBzdGQ6OmNvdXQgPDwgaSA8PCAiICI7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0=