問題
回答例
2 人とも自分の得点を最大化するように最適な戦略をとるという前提なので、まずは入力値aを降順に並べ替えることにする。
あとはAliceとBobが交互に取っていくのをどう表現するか。
# 入力値を取得する
N = int(input())
a = list(map(int, input().split()))
# 降順にソートする
a.sort(reverse=True)
# AliceとBobのカードの合計値を算出する
alice = 0
bob = 0
for i, v in enumerate(a):
if i % 2 == 0:
alice += v
else:
bob += v
print(alice - bob)
AliceとBobそれぞれのカードの合計値を出すのは以下のように書いた方がスマートだったな。
Alice = sum(a[::2])
Bob = sum(a[1::2])
コメント