동전 게임

시간 제한1초메모리 제한32 MB

요약
두 선수가 더미 위에서부터 동전을 가져가되 각 차례에 이전 차례가 가져간 수의 최대 두 배까지 가져갈 수 있을 때, 양쪽이 최적으로 플레이한다고 가정하고 첫 번째 선수가 얻을 수 있는 최대 가치를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 게임 이론, 그리디, 누적 합
정답자
아직 제출이 없습니다

문제

두 사람이 번갈아 가며 진행하는 동전 게임이 있다.

처음에 NN개의 동전이 하나의 더미로 쌓여 있다. 위에서부터 ii번째 동전의 가치는 CiC_i이다.

첫 번째 사람은 더미의 맨 위에서 동전을 한 개 또는 두 개 가져간다. 그다음부터는 각 차례마다 직전 사람이 가져간 동전 개수의 두 배까지 가져갈 수 있으며, 최소한 한 개는 반드시 가져가야 한다. 즉 직전 사람이 kk개를 가져갔다면 이번 사람은 맨 위에서 11개부터 2k2k개까지 가져갈 수 있다. (남은 동전이 그보다 적다면 남은 것만큼만 가져간다.) 더 이상 가져갈 동전이 없으면 게임이 끝난다.

두 사람 모두 자신이 모은 동전 가치의 합을 최대로 만들려고 최적으로 행동한다. 두 번째 사람도 자신의 이득을 최대화하도록 움직인다고 할 때, 첫 번째 사람이 모을 수 있는 동전 가치 합의 최댓값을 구하여라.

입력

첫째 줄에 동전의 개수 NN이 주어진다. (5≤N≤20005 \le N \le 2000)

둘째 줄부터 N+1N+1번째 줄까지 각 줄에 맨 위에서부터 ii번째 동전의 가치 CiC_i가 주어진다. (1≤Ci≤1000001 \le C_i \le 100000)

출력

첫째 줄에 첫 번째 사람이 모을 수 있는 동전 가치 합의 최댓값을 출력한다.

힌트

동전의 가치가 위에서부터 차례로 1,3,1,7,21, 3, 1, 7, 2인 경우를 살펴보자.

첫 번째 사람이 동전 한 개를 가져간다(가치 11). 두 번째 사람도 한 개를 가져간다(가치 33). 다시 첫 번째 사람이 두 개를 가져간다(가치 1,71, 7, 합 99). 마지막으로 두 번째 사람이 남은 동전을 가져간다(가치 22, 합 55). 이때 첫 번째 사람이 모은 값 99가 최댓값이다.

예제1

  1. 예제 1

    입력
    5
    1
    3
    1
    7
    2
    
    예상 출력
    9