AtCoder ABC 070 B – Two Switches Python解説

2021年11月21日

スポンサーリンク

Two Switches

Alice と Bob は、ロボットを制御するためのスイッチを1つずつ持っており、ロボットを動かしています。
Alice はロボットを動かし始めて A 秒後にスイッチを押し始め、ロボットを動かし始めて B 秒後にスイッチを離しました。
Bob はロボットを動かし始めて C 秒後にスイッチを押し始め、ロボットを動かし始めて D 秒後にスイッチを離しました。
Alice と Bob が、二人ともスイッチを押していた秒数を求めてください。

AtCoder Beginner Contest 070

スイッチを離した秒数の最小値から、スイッチを押し始めた秒数の最大値を求めることで解答にたどり着けます。

入力例1(0,75,25,100)を図にしてみると

 A(0) --------------- B(75)
     C(25) --------------- D(100)
max(A, C)  ----------  min(B, D)
       
  

これをコードにしてみると、

a, b, c, d = map(int, input().split())

a_c = max(a, c)
b_d = min(b, d)

print(max(0, b_d - a_c))

場合により、スイッチを押している時間が被っていないことが考えられます。
この時には計算結果がマイナスになるので、最後にb_d – a_cと0をmax関数で比べて、時間が被っていないときには0が出力されます。