AtCoder Beginner Contest 005 C – おいしいたこ焼きの売り方 をPython3で解く

Share

AtCoder上にある問題のうち、AtCoder Problemsでdiff 800以上と判定されているものを順番に解いていく企画。
基本的な考え方は全てコード中のコメントに入れてあるので、参照のこと。

出典:
AtCoder Beginner Contest 005 C – おいしいたこ焼きの売り方

客を一秒でも待たせたら負け……というあたりに、高橋君のたこ焼きに掛ける並々ならぬ情熱が垣間見える問題。
問題そのものは、与えられたデータが条件を満たすかどうか確認するだけなので、素直にそのまま実装すればいい。

# AtCoder Beginner Contest 005
# https://atcoder.jp/contests/abc005/tasks/abc005_3
# tag: 愚直 高橋君

# 制約も緩いので、素直に書かれている通りのことを
# 実装していくだけ。
# ここではインデックスを進める形で解いているが、
# キューなどを使用すると多少やりやすいかも?
def main():
T = int(input())
N = int(input())
takoyakis = list(map(int, input().split()))
M = int(input())
customers = list(map(int, input().split()))

# たこ焼き用インデックス
tkyk_idx = 0

# 客ごとに見ていく
for c in customers:
# たこ焼きが尽きたらNG
if tkyk_idx >= len(takoyakis):
print('no')
return
# 客の来店に間に合うたこ焼きがなければNG
if takoyakis[tkyk_idx] > c:
print('no')
return
# たこ焼きが古すぎたら、使えるのが出てくるまで廃棄
while c - takoyakis[tkyk_idx] > T:
tkyk_idx += 1
# 客の来店に間に合わないときはNG
if tkyk_idx >= len(takoyakis):
print('no')
return
# 客にたこ焼きを渡す
tkyk_idx += 1

# 客を捌き切ったらOK
print('yes')

main()

Share

コメントを残す

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