Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 355 B - Piano 2 | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 105

問題概要

長さ  N の数列  A と、長さ  M の数列  B が与えられる。  A, B の全ての要素を昇順に並べた長さ  N + M の数列  C において、  A の要素が2つ連続するかどうか判定せよ。ただし、  A, B の要素は全て異なるとする。

制約

  • 入力はすべて整数。
  •  1 \leq N, M \leq 100
  •  1 \leq A_i, B_j \leq 200

考察

 N, M の制約が小さいので、 C の各要素が  A にあるかどうかの判定には  A を全探索してしまって良いだろう。

連続しているかどうかには、フラグ用の変数を用いた。

コード

#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;
}

atcoder.jp

実装時間: 5分