AtCoder Beginner Contest 107 C – Candles をPython3で解く

Share

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

出典:
AtCoder Beginner Contest 107 C – Candles

決め打つ範囲を全探索する問題。

# AtCoder Beginner Contest 107 C - Candles
# https://atcoder.jp/contests/abc107/tasks/arc101_a
# tag: 考察 すぬけ君

# すぬけ君を中心として、N 本のろうそくを取ることになる。
# 取る範囲の左端を決めれば、右端も決まる。
# というわけで、左端を動かして全探索する。
# このとき、0 → 左端 → 右端と動く場合と、0 → 右端 → 左端
# と動く場合の二通りを考慮する。

def main():
N, K = map(int, input().split())
candles = list(map(int, input().split()))

result = 10**9

# left: 左端のろうそくのインデックスとして全探索
for left in range(N - K + 1):
right = left + K - 1

# 左端~右端の距離
lr = abs(candles[right] - candles[left])

# 0 → 左端 → 右端の場合
l_first = abs(candles[left]) + lr

# 0 → 右端 → 左端の場合
r_first = abs(candles[right]) + lr

# 今までの最小値を含めて比べ、一番小さいものを採用
result = min(result, l_first, r_first)

print(result)

main()
Share

コメントを残す

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