돌 놓기 게임

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

요약
두 사람이 원형 판에서 번갈아 자기 돌을 인접한 빈칸으로 늘려 갈 때, 최적으로 둘 경우 각자의 점수를 구한다.
난이도

어려움10점 중 8점

유형
게임 이론, 그리디, 구현, 구간
정답자
아직 제출이 없습니다

문제

NN개의 칸이 원형으로 배치된 게임판을 갖고 철수와 영희가 게임을 하려고 한다. ii번째 칸에는 음이 아닌 정수 x_ix\_{i}가 쓰여 있다. 각 칸에는 돌을 최대 하나씩 놓을 수 있다.

철수는 검은 돌을 NN개 갖고 있고, 영희는 흰 돌을 NN개 갖고 있다. 먼저 두 사람이 정해진 몇 개의 칸에 돌을 놓는다. 이후 철수부터 시작해서 번갈아 가며 턴을 진행한다. 자신의 턴에는 자신의 돌이 놓인 칸과 인접한 빈칸이 있을 때, 그중 하나를 골라 자신의 돌을 놓는다. 그러한 칸이 없다면 그대로 상대의 턴으로 넘어간다. 아무도 돌을 놓을 수 없는 경우 게임이 종료된다.

철수와 영희는 각자 자신의 돌이 놓인 칸의 점수의 합을 최대화하려고 한다. 턴을 진행하기 전의 돌의 배치가 주어지고 두 사람 모두가 최적의 수를 두었을 때 각자의 점수를 구하여라.

입력

첫 줄에 NN이 주어진다. (3≤N≤200,0003\leq N\leq 200\\, 000)

둘째 줄에 NN개 칸의 돌 배치를 나타내는 정수 c_1c\_{1}, ⋯\cdots, c_Nc\_{N}이 공백을 사이에 두고 주어진다. (0≤c_i≤20\leq c\_{i}\leq 2) c_i=1c\_{i}=1이면 ii번째 칸에 검은 돌이 놓여 있음을, c_i=2c\_{i}=2이면 흰 돌이 놓여 있음을, c_i=0c\_{i}=0이면 어떤 색의 돌도 놓여 있지 않음을 의미한다.

셋째 줄에 NN개 칸에 적힌 정수 x_1x\_1, ⋯\cdots, x_Nx\_{N}이 공백을 사이에 두고 주어진다. (0≤x_i≤1090\leq x\_i\leq 10^9)

출력

첫 줄에 철수와 영희가 얻게 되는 각자의 점수를 공백을 사이에 두고 출력한다.

예제4

  1. 예제 1

    입력
    9
    0 1 0 2 0 0 2 0 0
    1 2 3 4 5 6 7 8 9
    
    예상 출력
    12 33
    
  2. 예제 2

    입력
    4
    0 0 0 0
    6 9 8 8
    
    예상 출력
    0 0
    
  3. 예제 3

    입력
    8
    1 0 0 0 0 0 0 1
    2 9 4 8 1 8 5 0
    
    예상 출력
    37 0
    
  4. 예제 4

    입력
    36
    1 1 0 0 2 2 0 1 0 0 0 0 2 0 0 0 1 0 0 0 1 0 0 2 0 0 0 2 0 0 0 1 0 0 0 1
    18 23 18 20 40 30 19 15 13 11 19 21 12 25 43 37 23 21 10 4 9 7 3 60 54 32 18 39 42 55 71 92 4 2 40 1
    
    예상 출력
    493 458