考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC088-B - Card Game for Two を解く

ABC088-B - Card Game for Two

 

2人のプレイヤーがN枚のカードを交互に取っていく

それぞれが取ったカードに書かれた数字の合計を最大にしようとするとき

先攻は後攻に対して何点差をつけられるか、という問題

 

常に数字が最大のものを取るようにしてシミュレーションを行う

最後に各自の合計の差を取って出力する

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
N=int(input())
l=list(map(int,input().split()))

# 先攻:a  後攻:b
a=b=0

# 数字が大きい順にソート
l.sort()
l.reverse()

for i in range(len(l)):
  if i%2==0:
    a+=l[i]
  else:
    b+=l[i]

# 出力
print(a-b)

 

提出結果はACでした