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

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

AtCoder ABC 072 A - Sandglass2 (灰色, 100 点)

if 文を使ってもいいし、関数 max() を使ってもいい

問題概要

 X 秒を測れる砂時計がある。 X g あって、1 秒間に 1 g の砂が落ちる。

砂時計の計測を始めてから、 t 秒間がたった。残っている砂は何 g でしょうか。

解法

基本的には引き算すればよい。つまり、 X - t [g] が答えになりそうだ。

しかし、砂の量はマイナスにはならないので、 0 より小さくなったら 0 のままとなる。これを処理するためには

  • if 文を用いて  X - t \lt 0 のときは 0 と答える
  • 関数 max を用いて、max(X - t, 0) を答える

という方法がある。下には後者の解答例を示す。

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

int main() {
    int X, t;
    cin >> X >> t;
    cout << max(X - t, 0) << endl;
}