N枚のカードを使ってゲームしたときに、Alice は Bob より何点多く取るか求める問題です。
提出
n = int(input())
a = sorted(list(map(int, input().split())), reverse=True)
alice = 0
bob = 0
for i in range(n):
if i%2 == 0:
alice += a[i]
else:
bob += a[i]
print(alice-bob)
2 人とも自分の得点を最大化するような戦略を取るため、自分の番には、残ったカードの中から最大のものを取ることになります。
つまり、大きい順に 2 人でカードを取ることと同じです。
リストaを降順にソートして、インデックスが偶数の時は Alice に、奇数の時は Bob に加えます。
最後にAlice から Bob を引いたものを出力します。
以下のように短く書くこともできます。
提出
n = int(input())
a = sorted(list(map(int, input().split())), reverse=True)
print(sum(a[::2])-sum(a[1::2]))
スライス操作を用いて、 Alice の合計値と Bob の合計値を計算し、Alice から引いたものを出力します。