実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 105
問題概要
長さ の数列 と、長さ の数列 が与えられる。 の全ての要素を昇順に並べた長さ の数列 において、 の要素が2つ連続するかどうか判定せよ。ただし、 の要素は全て異なるとする。
制約
- 入力はすべて整数。
考察
の制約が小さいので、 の各要素が にあるかどうかの判定には を全探索してしまって良いだろう。
連続しているかどうかには、フラグ用の変数を用いた。
コード
#include <bits/stdc++.h> using namespace std; // ======================================== // int main() { int N, M; cin >> N >> M; vector<int> A(N), B(M); rep(i, 0, N) cin >> A[i]; rep(i, 0, M) cin >> B[i]; vector<int> C; rep(i, 0, N) C.push_back(A[i]); rep(i, 0, M) C.push_back(B[i]); sort(all(C)); int flag = -1; rep(i, 0, N + M) { if (find(all(A), C[i]) != A.end()) { if (flag == 0) { cout << "Yes" << endl; return 0; } else { flag = 0; } } else if (find(all(B), C[i]) != B.end()) { flag = 1; } } cout << "No" << endl; return 0; }
実装時間: 5分