けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 155 A - Poor (灰色, 100 点)

これは結構難しい。いろんな解法がある。

問題概要

 3 個の整数  A, B, C が与えられる。

これらのうち 2 個の値が等しく、残りの 1 個の値がそれらと異なるならば "Yes" を出力せよ。そうでなければ "No" を出力せよ。

解法

ABC-A の前提知識ではないが、集合型 (set 型) を用いるのが簡単だと思われる。

問題の条件は、「3 個の整数の中に、値は 2 種類ある」と言い換えられる。

よって、 A, B, C を集合型変数に格納して、そのサイズが 2 であるかどうかを判定すればよい。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int A, B, C;
    cin >> A >> B >> C;
    set<int> S({A, B, C});
    if (S.size() == 2)
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}