Kazun の競プロ記録

競技プログラミングに関する様々な話題を執筆します.

AtCoder Beginner Contest 228 A 問題 On and Off

問題

atcoder.jp

提出解答 (場合分け)

atcoder.jp

提出解答 (シミュレーション)

atcoder.jp

問題の概要

毎日  S 0 分に部屋の電気を付け,  T 0 分に部屋の電気を消す生活をしている場合,  X 30 分には部屋の電気はついているか?

制約

  •  0 \leq S,T,X \leq 23
  •  S \neq T
  • 入力は全て整数

解法1 (場合分け)

  •  S \lt T のとき
     S \leq X \lt T であることと,  X 30 分に部屋の電気がついていることが同値である.
  •  T \lt S のとき
    上の場合を参考にして,  S \leq X \lt T や,  T \leq X \lt S では判定できない. ただ,  S 時につけた部屋の電気を日付が変わる直前に消し, 日付が変わった直後に部屋の電気をつけると考えると, 以下のような判定法が使える.
 S \leq X \lt 24 または  0 \leq X \lt T

(※  X \lt 24 0 \leq X は制約から不要)

よって, 答えが  {\tt Yes} になるのは,

 \begin{cases} S \leq X \lt T & (S \lt T) \\ (S \leq X) \lor (X \lt T) & (T \lt S) \end{cases}

である.

解法2 (シミュレーション)

24時間で日付が変わることから, 実際に30分ずつ時間を勧めながらシミュレーションすることによっても判定できる.