https://onlinejudge.u-aizu.ac.jp/services/room.html#RitsCamp19Day3/problems/A
解説
https://onlinejudge.u-aizu.ac.jp/services/review.html#RitsCamp19Day3/3419402
尺取法っぽくやっていこう。
順番に見ていって、一緒ならand,orどっちもにも入れて、そうじゃないならorにだけ入れる。
int N, M, A[201010], B[201010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N >> M; rep(i, 0, N) cin >> A[i]; rep(i, 0, M) cin >> B[i]; vector<int> ansand, ansor; int a = 0, b = 0; while (a < N and b < M) { if (A[a] == B[b]) { ansand.push_back(A[a]); ansor.push_back(A[a]); a++; b++; } else if (A[a] < B[b]) { ansor.push_back(A[a]); a++; } else { ansor.push_back(B[b]); b++; } } while (a < N) { ansor.push_back(A[a]); a++; } while (b < M) { ansor.push_back(B[b]); b++; } int A = ansand.size(); int B = ansor.size(); printf("%d %d\n", A, B); fore(i, ansand) printf("%d\n", i); fore(i, ansor) printf("%d\n", i); }