#include <iostream>
#include <algorithm>
#include <string>
#include <list>
using namespace std;
int main() {
list<string> l = {"aab", "aac", "abb", "123", "aaw", "wws"};
list<string> whiteList = {"aa", "ab"};
auto end = remove_if(l.begin(), l.end(), [&whiteList](string item)
{
for(auto &s : whiteList)
{
auto res = std::mismatch(s.begin(), s.end(), item.begin());
if (res.first == s.end()){
return false; //found allowed prefix
}
}
return true;
});
for (auto it = l.begin(); it != end; ++it){
cout<< *it << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bGlzdD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJbGlzdDxzdHJpbmc+IGwgPSB7ImFhYiIsICJhYWMiLCAiYWJiIiwgIjEyMyIsICJhYXciLCAid3dzIn07CglsaXN0PHN0cmluZz4gd2hpdGVMaXN0ID0geyJhYSIsICJhYiJ9OwoJYXV0byBlbmQgPSByZW1vdmVfaWYobC5iZWdpbigpLCBsLmVuZCgpLCBbJndoaXRlTGlzdF0oc3RyaW5nIGl0ZW0pCgkJeyAKCQkJZm9yKGF1dG8gJnMgOiB3aGl0ZUxpc3QpCgkJCXsKCQkJCWF1dG8gcmVzID0gc3RkOjptaXNtYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIGl0ZW0uYmVnaW4oKSk7CgkJCQlpZiAocmVzLmZpcnN0ID09IHMuZW5kKCkpewoJCQkJCXJldHVybiBmYWxzZTsgLy9mb3VuZCBhbGxvd2VkIHByZWZpeAoJCQkJfQoJCQl9CgkJCXJldHVybiB0cnVlOyAKCQl9KTsKCWZvciAoYXV0byBpdCA9IGwuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KXsKCQljb3V0PDwgKml0IDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==