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

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

JOIG 2021 A - 金平糖 (AOJ 0701, 難易度 1)

入出力の練習をしましょう。

問題概要

3 人の生徒がそれぞれ  A 個、 B 個、 C 個の金平糖をもらいました。

これからそれぞれの生徒たちに何個かの金平糖を追加で渡すことで、3 人の生徒がもらった金平糖の個数が等しくなるようにしたいとします。

追加で必要な金平糖の個数の最小値を求めてください。

制約

  •  1 \le A, B, C \le 100

考えたこと

たとえば  (A, B, C) = (4, 9, 6) としてみましょう。このとき、最もたくさん食べたのは真ん中の生徒の 9 個です。

他の 2 人の生徒の量をそれに合わせればよいでしょう。よって

(9 - 4) + (9 - 6) = 8 個

が答えとなります。

さらに整理

さらに整理すると、次のように考えられます。

  • 3 人の最大値を  M = \max(A, B, C) とする
  • 3 人の総和を  S = A + B + C とする

このとき答えは、 M \times 3 - S となります。

コード

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

int main() {
    // 入力
    int A, B, C;
    cin >> A >> B >> C;

    // 最大値を求める
    int M = max({A, B, C});

    // 総和を求める
    int S = A + B + C;

    // 最大値 × 3 - 総和が答え
    cout << M * 3 - S << endl;
}