#include #include #include #include #include #include #include #include using Event = std::tuple; namespace std { std::istream& operator>>(std::istream& is, Event& event) { is >> std::get<0>(event) >> std::get<1>(event); std::getline(is, std::get<2>(event)); return is; } std::ostream& operator<<(std::ostream& os, Event const& event) { os << std::setfill('0') << std::setw(2) << std::get<0>(event) << " to " << std::setw(2) << std::get<1>(event) << ": " << std::get<2>(event); return os; } } int main() { std::ifstream first_ifs { "first.txt" }; std::vector first_schedule { std::istream_iterator{first_ifs}, std::istream_iterator{} }; std::sort(first_schedule.begin(), first_schedule.end()); std::ifstream second_ifs { "second.txt" }; std::vector second_schedule { std::istream_iterator{second_ifs}, std::istream_iterator{} }; std::sort(second_schedule.begin(), second_schedule.end()); std::vector combined_schedule {}; std::merge(first_schedule.begin(), first_schedule.end(), second_schedule.begin(), second_schedule.end(), std::back_inserter(combined_schedule)); combined_schedule.erase(std::unique(combined_schedule.begin(), combined_schedule.end()), combined_schedule.end()); std::copy(combined_schedule.begin(), combined_schedule.end(), std::ostream_iterator{std::cout, "\n"}); }