#include <algorithm>
#include <iterator>
#include <string>
#include <vector>
#include <list>
#include <iostream>
bool funny_comp(const std::string &lhs, const std::string &rhs)
{
return (lhs.size() == rhs.size()) ? lhs < rhs
: lhs.size() < rhs.size();
}
int main()
{
std::vector<std::string> vec1{"and", "thus", "it", "has", "a", "beginning", "and", "end"};
std::vector<std::string> vec2{"and", "therefore", "stars", "are", "beginning", "to","fall","to","their", "end"};
std::sort(vec1.begin(), vec1.end(), funny_comp);
std::sort(vec2.begin(), vec2.end(), funny_comp);
std::list<std::string> intersection;
std::set_intersection(vec1.begin(), vec1.end(),
vec2.begin(), vec2.end(),
std::back_inserter(intersection),
funny_comp);
for (const auto& s : intersection)
std::cout << s << " ";
std::cout << std::endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bGlzdD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKYm9vbCBmdW5ueV9jb21wKGNvbnN0IHN0ZDo6c3RyaW5nICZsaHMsIGNvbnN0IHN0ZDo6c3RyaW5nICZyaHMpCnsgCiAgIHJldHVybiAobGhzLnNpemUoKSA9PSByaHMuc2l6ZSgpKSA/IGxocyA8IHJocwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgbGhzLnNpemUoKSA8IHJocy5zaXplKCk7Cn0KCmludCBtYWluKCkKewoKICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdmVjMXsiYW5kIiwgInRodXMiLCAiaXQiLCAiaGFzIiwgImEiLCAiYmVnaW5uaW5nIiwgImFuZCIsICJlbmQifTsKICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdmVjMnsiYW5kIiwgInRoZXJlZm9yZSIsICJzdGFycyIsICJhcmUiLCAiYmVnaW5uaW5nIiwgInRvIiwiZmFsbCIsInRvIiwidGhlaXIiLCAiZW5kIn07CgogIHN0ZDo6c29ydCh2ZWMxLmJlZ2luKCksIHZlYzEuZW5kKCksIGZ1bm55X2NvbXApOwogIHN0ZDo6c29ydCh2ZWMyLmJlZ2luKCksIHZlYzIuZW5kKCksIGZ1bm55X2NvbXApOwogIHN0ZDo6bGlzdDxzdGQ6OnN0cmluZz4gaW50ZXJzZWN0aW9uOwoKICBzdGQ6OnNldF9pbnRlcnNlY3Rpb24odmVjMS5iZWdpbigpLCB2ZWMxLmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgICB2ZWMyLmJlZ2luKCksIHZlYzIuZW5kKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFja19pbnNlcnRlcihpbnRlcnNlY3Rpb24pLAogICAgICAgICAgICAgICAgICAgICAgICBmdW5ueV9jb21wKTsKCiAgZm9yIChjb25zdCBhdXRvJiBzIDogaW50ZXJzZWN0aW9uKQogICAgc3RkOjpjb3V0IDw8IHMgPDwgIiAiOwogIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgoKfQo=