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

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

JOI 一次予選 2022 (第 1 回) B - 移動 (8Q, 難易度 1)

少し数学を頑張ろう!

問題概要

A 地点から B 地点に移動するのに  X 時間,B 地点から C 地点に移動するのに  Y 時間かかる。

A 地点から B 地点を経由して C 地点に移動するとき、 Z 時間 30 分以内に移動することができるか判定せよ。

制約

  •  1 \le X, Y, Z \le 100

解法

まずは、素直に不等式を立ててみましょう。A 地点から B 地点を経由して C 地点に移動するとき、所要時間は

 X + Y (時間)

と求められます。一方、

 Z (時間) 30 (分) =  Z + 0.5 (時間)

です。よって、求める条件は

 X + Y \le Z + 0.5

と表せます。 X, Y, Z はすべて整数なので、

 X + Y \le Z

としても差し支えありません。この条件を if 文を用いて判定します。

コード

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

int main() {
    int X, Y, Z;
    cin >> X >> Y >> Z;
    if (X + Y <= Z) cout << 1 << endl;
    else cout << 0 << endl;
}