AtCoder Beginner Contest 024 C – 民族大移動 をPython3で解く

Share

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

出典:
AtCoder Beginner Contest 024 C – 民族大移動

この問題から分かるのは、どうやら高橋王国は多民族国家であるらしいということ。また、その全ての民族が自分の土地に執着しないらしいということ。となると、おそらく遊牧騎馬民族国家だと思われる。つまり、高橋君はチンギス・ハーンだったんだよ!!!(な、なんだってー

# AtCoder Beginner Contest 024 C - 民族大移動
# https://atcoder.jp/contests/abc024/tasks/abc024_c
# tag: 貪欲法 愚直 高橋王国

# 可能な限り目的の街に近づくように、貪欲に
# 移動させればいい。
# 民族の数: 1 <= K <= 100
# 大移動の日数: 1 <= D <= 10000
# より、愚直にシミュレートして十分間に合う。

def main():
N, D, K = map(int, input().split())
movable = [list(map(int, input().split())) for _ in range(D)]
races = [list(map(int, input().split())) for _ in range(K)]

# 民族ごとにシミュレートしていく
for pos, goal in races:
# 各移動日ごとの制限を見ていく
for d, (left, right) in enumerate(movable,start=1):
# 移動可能かどうかをチェック
if not (left <= pos <= right):
continue

# この日にゴール可能なら、ゴールして次の民族へ
if left <= goal <= right:
print(d)
break

# ゴール可能でなければ、一番ゴールに近い街へ移動
elif goal < left:
pos = left
else:
pos = right

main()
Share

コメントを残す

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