아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

두더지 잡기

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

요약
원형으로 놓인 구멍에서 최대 k번 발사해 목표 구멍의 두더지를 내보내고 이웃 구멍의 두더지는 바깥으로 밀어낼 때, 내보낼 수 있는 두더지 수의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 구현, 배열
정답자
아직 제출이 없습니다

문제

잔디밭에 두더지굴 nn개가 원형으로 놓여 있고, 각 굴에는 11번부터 nn번까지 차례로 번호가 매겨져 있다. 원형이므로 11번과 22번, 22번과 33번, …\dots, nn번과 11번 굴이 서로 인접하다.

지금 ii번 굴에는 두더지가 aia_i마리 있다. 모형 권총으로 ii번 굴을 쏘면 다음 일이 동시에 일어난다.

  • ii번 굴에 있던 두더지는 모두 겁을 먹고 굴 밖으로 탈출한다. (이렇게 굴을 탈출한 두더지가 '쫓아낸' 두더지로 집계된다.)
  • ii번 굴과 인접한 두 굴에 있던 두더지도 겁을 먹어, ii번 굴이 아닌 반대쪽 이웃 굴로 달아난다. 즉 i−1i-1번 굴의 두더지는 i−2i-2번 굴로, i+1i+1번 굴의 두더지는 i+2i+2번 굴로 이동한다.

예를 들어 1010번 굴을 쏘면, 1010번 굴의 두더지는 모두 탈출하고 99번 굴의 두더지는 88번 굴로, 1111번 굴의 두더지는 1212번 굴로 이동한다.

권총을 최대 kk번 쏠 수 있을 때, 굴 밖으로 탈출시킬 수 있는 두더지 수의 최댓값을 구하여라.

입력

첫째 줄에 두더지굴의 수 nn과 권총을 쏠 수 있는 최대 횟수 kk가 주어진다. (5≤n≤20005 \le n \le 2000, 1≤k≤n1 \le k \le n)

둘째 줄에 nn개의 정수 a1,a2,…,ana_1, a_2, \dots, a_n이 공백으로 구분되어 주어진다. aia_i는 ii번 굴에 있는 두더지의 수이다. (0≤ai≤1060 \le a_i \le 10^6)

출력

권총을 최대 kk번 사용했을 때 굴 밖으로 탈출시킬 수 있는 두더지 수의 최댓값을 한 줄에 출력한다.

힌트

굴의 상태가 [6,1,5,3,4][6, 1, 5, 3, 4]라고 하자. (왼쪽부터 차례로 11번 굴이다.)

먼저 11번 굴을 쏘면 그 굴의 두더지 66마리가 탈출한다. 이때 11번 굴의 이웃인 55번 굴(nn번 굴)의 두더지는 44번 굴로, 22번 굴의 두더지는 33번 굴로 이동하여 상태는 [0,0,6,7,0][0, 0, 6, 7, 0]이 된다.

다음으로 44번 굴을 쏘면 그 굴에 모인 두더지 77마리가 탈출한다. 두 번의 사격으로 모두 6+7=136 + 7 = 13마리를 쫓아낼 수 있다.

예제3

  1. 예제 1

    입력
    5 2
    6 1 5 3 4
    
    예상 출력
    13
    
  2. 예제 2

    입력
    5 1
    6 1 5 3 4
    
    예상 출력
    6
    
  3. 예제 3

    입력
    5 3
    6 1 5 3 4
    
    예상 출력
    19