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

コメントを残す

メールアドレスが公開されることはありません。