Pythonで理解する蟻本「Fence Repair(PKU 3253)」(p.75)
この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の
「Fence Repair(PKU 3253)」(p.75)
のコードをPythonで書き直したものとなっています。
入力
入力例
3
8 5 8
解答
# 順位キュー(優先度付きキュー)をインポートする
import heapq
# 入力
N = int(input())
L = list(map(int,input().split()))
ans = 0
# 順位キュー(優先度付きキュー)を用意
que = []
for i in range(N):
heapq.heappush(que, L[i])
# 坂が1本になるまで適用
while len(que) > 1:
# 一番短い板, 次に短い板を取り出す
l1 = heapq.heappop(que)
l2 = heapq.heappop(que)
# それらを併合
ans += l1 + l2
heapq.heappush(que, l1 + l2)
print(ans)