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

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

JOI 一次予選 2021 (第 2 回) A - 帰省 (8Q, 難易度 1)

ちょっと細かいところミスった人も多いかもしれないね。

問題概要

ビ太郎は帰省することにした。

今日から  A 日後の午前に実家に着き、今日から  B 日後の午前に実家を去る。

それを聞きつけたビバ子は、今日から  C 日後の午後にビ太郎の実家を訪れることにした。ビバ子がビ太郎に会えるか判定せよ。

解法

落ち着いて考えましょう。ビバ子がビ太郎に会えるためには、

  1. ビバ子が訪れるときには、ビ太郎は帰省して実家についている
  2. ビバ子が訪れるときには、ビ太郎はまだ実家を去っていない

という 2 つの条件を満たすことが必要です (逆にこれらを満たせば、ビバ子はビ太郎に会えます)。

1 個目の条件

1 個目の条件は、

 A \le C

と表せます。 C = A の場合にも、ビバ子はビ太郎に会えることに注意しましょう。ビ太郎は午前に実家に着き、ビバ子は午後に訪れるので会えるのです。

2 個目の条件

2 個目の条件は、

 C \lt B

と表せます。今度は、 C = B の場合は、ビバ子はビ太郎には会えないことに注意しましょう。ビ太郎は午前に実家を去るので、ビバ子が午後に訪れるときには、もう会えないのです。

コード

以上をまとめると、次の解法となります。

  •  A \le C \lt B のとき、1 を出力
  • そうでないとき、0 を出力

なお、 A \le C \lt B は C++ では、A <= C && C < B というように、2 つの不等式に分けて書く必要があることに注意しましょう。

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

int main() {
    int A, B, C;
    cin >> A >> B >> C;
 
    if (A <= C && C < B) cout << 1 << endl;
    else cout << 0 << endl;
}