#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <unordered_set>
using namespace std;
vector<string> findWords( const vector<string> &wordsToSearchIn,
const unordered_set<string> &wordsToReject )
{
vector<string> result( wordsToSearchIn.size() ) ;
auto pred = [wordsToReject]( const string &word )
{
return wordsToReject.find( word ) == wordsToReject.end();
};
auto it = copy_if( wordsToSearchIn.begin(),
wordsToSearchIn.end(),
result.begin(),
pred );
result.resize( distance( result.begin(), it) );
return result;
}
int main()
{
vector<string> wordsToSearchIn{ "siema", "herbata", "krzeslo" };
unordered_set<string> wordsToReject{ "herbata" };
auto result = findWords( wordsToSearchIn, wordsToReject );
for( const auto &word : result )
cout<<word<<"\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8c3RyaW5nPiBmaW5kV29yZHMoIGNvbnN0IHZlY3RvcjxzdHJpbmc+ICZ3b3Jkc1RvU2VhcmNoSW4sIAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVub3JkZXJlZF9zZXQ8c3RyaW5nPiAmd29yZHNUb1JlamVjdCApCnsKICAgIHZlY3RvcjxzdHJpbmc+IHJlc3VsdCggd29yZHNUb1NlYXJjaEluLnNpemUoKSApCTsKICAgIGF1dG8gcHJlZCA9IFt3b3Jkc1RvUmVqZWN0XSggY29uc3Qgc3RyaW5nICZ3b3JkICkKCQkJCSAgICAgICAgICAgICAgIHsKCQkJCSAgICAgICAgICAgICAgICAgICByZXR1cm4gd29yZHNUb1JlamVjdC5maW5kKCB3b3JkICkgPT0gd29yZHNUb1JlamVjdC5lbmQoKTsKCQkJCSAgICAgICAgICAgICAgIH07CiAgICAKICAgIGF1dG8gaXQgPSBjb3B5X2lmKCB3b3Jkc1RvU2VhcmNoSW4uYmVnaW4oKSwKICAgICAgICAgICAgIAkJICAgd29yZHNUb1NlYXJjaEluLmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5iZWdpbigpLAogICAgICAgICAgICAgICAgICAgICAgIHByZWQgKTsKICAgICAgICAgICAgIAogICAgcmVzdWx0LnJlc2l6ZSggZGlzdGFuY2UoIHJlc3VsdC5iZWdpbigpLCBpdCkgKTsKICAgIAogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSAKewoJdmVjdG9yPHN0cmluZz4gd29yZHNUb1NlYXJjaElueyAic2llbWEiLCAiaGVyYmF0YSIsICJrcnplc2xvIiB9OwoJdW5vcmRlcmVkX3NldDxzdHJpbmc+IHdvcmRzVG9SZWplY3R7ICJoZXJiYXRhIiB9OwoJCglhdXRvIHJlc3VsdCA9IGZpbmRXb3Jkcyggd29yZHNUb1NlYXJjaEluLCB3b3Jkc1RvUmVqZWN0ICk7CgkKCWZvciggY29uc3QgYXV0byAmd29yZCA6IHJlc3VsdCApCgkJY291dDw8d29yZDw8IlxuIjsKCQkKCXJldHVybiAwOwp9