ABC088 B - Card Game for Two
備忘録
問題
回答
"use strict" function Main(input) { input = input.trim().split('\n'); const N = input[0]; const A = input[1].trim().split(' ').map(Number).sort((a,b) => b-a); let a = 0; let b = 0; for(let i=0; i<N; i++){ if(i % 2 === 0){ a += A[i]; } else { b += A[i]; } } console.log(a-b); } Main(require("fs").readFileSync("/dev/stdin", "utf8"));
考え方
- Alice, Bob ともに得点を最大化するようにカードを選択する。
- カードの選択はAliceから行われる。
カードの配列(A
)を降順ソートし、先頭から順に加算することで、ルール1を満たし、
カードの枚数回ループを行い、ループの回数でどちらの選択時か判断し、加算を行うことでルール2を満たせる。