【ABC185 B】「Smartphone Addiction」を解く【Python3】

「AtCoder」解説一覧へ

スマートフォンを満充電した状態で時刻0に外出した高橋君が、バッテリー残量が0になることなく帰宅することができるかどうかを判定する問題です。

提出
n, m, t = map(int, input().split())
now = 0
y = n

for i in range(m):
    a, b = map(int, input().split())
    y -= a-now
    if y <= 0: print("No") exit() y += b-a if y >= n:
        y = n
    now = b

y -= t-now
if y <= 0:
    print("No")
else:
    print("Yes")

バッテリー残量は、時刻「n+0.5 (nは整数)」を迎えるたびに1ずつ増減します。

時刻1で1ずつ増減すると考え、バッテリー残量が0以下であれば間に合っていない判定をします。

まず、カフェに到着した時刻Aiのバッテリー残量yを求めます。

y -= a-now
if y <= 0:
    print("No")
    exit()

ここで0以下であればプログラムは終了します。

続いて、カフェを出発する時刻Biのバッテリー残量を求めます。

y += b-a
if y >= n:
    y = n
now = b

バッテリー容量はNであるので、残量はN以上にはなりません。

これを帰宅するまでループさせて、最後に帰宅したときのバッテリー残量を判定して、結果を出力します。

【ABC185】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です