#include #include #include #include #include #include std::string to_lower(std::string const& s) { std::string result; std::transform(s.begin(), s.end(), std::back_inserter(result), ::tolower); return result; } int main() { std::vector suggestions { std::istream_iterator{ std::cin }, std::istream_iterator{ } }; std::transform(suggestions.begin(), suggestions.end(), suggestions.begin(), to_lower); std::sort(suggestions.begin(), suggestions.end()); suggestions.erase(std::unique(suggestions.begin(), suggestions.end()), suggestions.end()); std::sort(suggestions.begin(), suggestions.end(), [](std::string const& a, std::string const& b) { if (a.size() != b.size()){ return a.size() < b.size(); } return a < b; }); auto half = suggestions.size() / 2; std::copy(suggestions.begin(), suggestions.begin() + half, std::ostream_iterator(std::cout, " ")); std::cout << std::endl; return 0; }