연세워터파크

일직선 위 N개의 돌에 정수 K_i가 적혀 있을 때, 아무 돌에서 시작해 한 번에 D 이하만큼만 이동하며 서로 다른 돌을 밟아 얻을 수 있는 값 합의 최댓값을 구한다.

보통7동적 계획법세그먼트 트리배열면접 대비아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

(연세대학교 도서관, 2016년 7월)

연세대학교는 매년 여름 깜짝 워터파크를 연다. 어디에 생길지는 아무도 모르고, 보통 도서관이나 서문 쪽에 열린다는 사실만 알려져 있다.

개장을 막기는 어렵다고 판단한 학교는 차라리 학생들이 워터파크를 더 즐기도록 정수 KiK_i가 적힌 징검다리 NN개를 놓아 두었다. 수업이 끝나고 친구들과 집에 가던 준호는 이 징검다리로 여럿이 함께 즐길 게임을 하나 생각해냈다.

  • 각 사람은 시작점으로 쓸 징검다리를 아무거나 하나 고른다.
  • 시작점에서 출발한 뒤 계속 점프해 징검다리를 몇 개든 마음대로 밟고, 나오고 싶을 때 나온다. 시작점에서 바로 나오는 것도 가능하다.
  • 시작점을 포함해 밟은 모든 징검다리에 적힌 정수의 합이 가장 큰 사람이 이긴다.

이 규칙으로 게임을 하던 준호는 제자리 점프로 10억 점을 만드는 친구를 본 뒤 규칙을 더 보탰다.

  • 징검다리 NN개에 순서대로 11번부터 NN번까지 번호를 붙인다. UU번 징검다리에서 VV번 징검다리로 점프하려면 UUVV의 차이가 미리 정해진 값 DD 이하여야 한다.
  • 어떤 징검다리도 두 번 이상 밟을 수는 없다.

이제 바뀐 규칙으로 다시 게임을 한다. 준호가 얻을 수 있는 최대 점수는 몇 점인가?

입력

첫 줄에 징검다리의 수 NN과 문제에서 설명한 DD가 주어진다. (2N1052 \le N \le 10^5, 1DN11 \le D \le N-1)

이어 정수 NN개가 11번 징검다리부터 NN번 징검다리까지 순서대로 주어진다. ii번 징검다리에 적힌 수가 KiK_i이다. (109Ki109-10^9 \le K_i \le 10^9)

출력

가능한 최대 점수를 출력한다.