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

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

AtCoder ABC 201 A - Tiny Arithmetic Sequence (7Q, 灰色, 100 点)

意外と頭がこんがらがるかもしれないですね。100 点問題で必須となるテクニックではないですが、ソートすると考えやすいと思います。

問題概要

 3 個の整数  A_{1}, A_{2}, A_{3} が与えられる。

これら  3 個の整数を適切に並び替えることで、等差数列にすることが可能かどうかを判定せよ。

制約

  •  1 \le A_{i} \le 100

解法メモ (C++)

色々難しいことを考えないで済むようにするために、3 個の整数を小さい順に並び替えると良いと思います。

そのために、まず、3 個の整数を vector<int> 型の変数 A で受け取ることにします。このとき、3 個の整数は A[1], A[2], A[3] ではなく、A[0], A[1], A[2] となることに注意しましょう。

sort(A.begin(), A.end());

と書くことで、A は小さい順になります。

その後は簡単です。A[2] - A[1] == A[1] - A[0] であるかどうかを判定すればよいです。

コード

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

int main() {
    // 入力受け取り (サイズ 3 の vector で受け取る)
    vector<int> A(3);
    cin >> A[0] >> A[1] >> A[2];
    
    // ソートする
    sort(A.begin(), A.end());
    
    // 判定する
    if (A[2] - A[1] == A[1] - A[0]) cout << "Yes" << endl;
    else cout << "No" << endl;
}