https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0298?year=2014
考察過程
1. 時間と分のセットで扱うのは面倒なので、全て分に直そう(典型の考え方)
2. あとは、1つにまとめてソートして出力すればいい
3. 重複している部分はuniqueを使って除けばいい
解法
https://onlinejudge.u-aizu.ac.jp/status/users/hamayanhamayan/submissions/1/0298/judge/3156129/C++14
h時間とm分になっている表記をh*60+mとして分に統一しておく。
2つの時刻表を1つの配列に入れてソートする。
unique関数で重複を取り除いたら1つの時刻表にまとまったことになるので、
あとは、時間と分に表記を直して答え。
分は0埋めの2桁で表示するので、printfでは%02dで出力する。
int N; //--------------------------------------------------------------------------------------------------- void _main() { vector<int> v; rep(_, 0, 2) { cin >> N; rep(i, 0, N) { int h, m; cin >> h >> m; v.push_back(h * 60 + m); } } sort(all(v)); v.erase(unique(all(v)), v.end()); rep(i, 0, v.size()) { if (i) printf(" "); printf("%d:%02d", v[i] / 60, v[i] % 60); } printf("\n"); }