考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC024-B - 自動ドア を解く

ABC024-B - 自動ドア

 

自動ドアが開いている時間を求める問題

センサー反応後に開き続けている時間と、人が通る時間が

入力値として与えられる

 

注意しなければならないのは、人が通る時間の間隔だろう

例えば、10秒間開き続ける自動ドアの場合を考える

 

0秒後に1人目が、10秒後に2人目が通る場合は

0〜10秒、10〜20秒の計20秒間ドアが開き続けることになる

 

次に、0秒後に1人目が、7秒後に2人目が通る場合を考える

この場合は、0〜7秒、7〜17秒の計17秒間がドアの開いている時間となる

 

つまり、ドアの開く時間よりも短い間隔で人が通る場合は

その分だけドアの開く時間は短くなるということになる

そこに注意してコードを書いていく

   

提出したコード

# 入力
N,T=map(int,input().split())

# 合計秒数
s=0

# 最初に人が通る時間
a=int(input())

for i in range(N-1):
  # 次に通る人の時間を取得
  b=int(input())

  # 人の通る間隔がドアの開く間隔より短い場合
  if b-a<T:
    s+=b-a
  # 人の通る間隔がドアの開く間隔より長い場合
  else:
    s+=T
  # 次の比較のための処理
  a=b

# 最後にドアが開いていた時間を足す
s+=T

# 出力
print(s)

 

最後の人が通過したときの

ドアが開く時間を加算し忘れないように注意

 

提出結果はACでした