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

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

AtCoder ABC 136 A - Transfer (灰色, 100 点)

if 文を使うか、関数 max() を使えば OK

問題概要

水を入れる容器が 2 つある。

容器 1 には水を  A ミリリットルまで入れることができ、水が  B ミリリットル入っている。

容器 2 には水が  C ミリリットル入っている。

容器 2 から容器 1 に入るだけ水を移すと、容器 2 の中には何ミリリットルの水が残るか?

解法

容器 1 の空き容量は  A - B ミリリットルである。よって、容器 1 が満杯になるまで水をうつすと、容器 2 の残水量は

 C - (A - B) ミリリットル

となる。ただし、これが負の値になることはない。よって、答えは

max(C - (A - B), 0) ミリリットル

である。このように、負の値になることがない値に対して、関数 max() を用いて調節するのは今後定石となる。

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

int main() {
    int A, B, C;
    cin >> A >> B >> C;
    cout << max(C - (A - B), 0) << endl;
}