AtCoder ABC 024 B – 自動ドア Python解説

スポンサーリンク

自動ドア

ABCマーケットは高橋王国で最も人気なスーパーマーケットです。 入り口は自動ドアになっています。
この自動ドアは人が前を通りかかると自動で開き、そこから T 秒後まで開き続け、その後自動的に閉じます。 ドアが開いている状態で新たに人が前を通りかかると、通りかかった時刻のさらに T 秒後まで開き続ける時間が延長されます。

今日はのべ N 人の客が自動ドアの前を通りかかりました。i 番目の人が通りかかった時刻はABCマーケットが開店してから
Ai 秒経った時刻です。今日、この自動ドアが開いていた合計秒数を求めてください。

AtCoder Beginner Contest 024「自動ドア」

自動ドアが開いている時間と、次の人がドアの前を通りかかる時間の小さいほうを合計時間に加えていけばよい。

n, t = map(int, input().split())
a = [int(input()) for _ in range(n)]

cnt = 0

for i in range(1, n):
    cnt += min(t, a[i] - a[i-1])
    # *1
    if i == n - 1:
        cnt += t
print(cnt)

a[i] – a[i-1]で前の人が通った時間の差分を出している。これと自動ドアが開いている時間Tと比べ、時間の小さいほうが答えとなるcntに加えられる。

(*1)このif文で最後に自動ドアの前を通る人かどうかをチェックしている。最後に通る人だったら次に通る人がいないので、この時点で自動ドアが開いている時間をcntに加えて完了となります。