만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

시리즈

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

요약
에피소드 n개의 크기와 패킷마다 붙는 헤더 크기 k가 주어질 때, 같은 요청 순서로 모든 에피소드를 받는 패킷 총합의 최솟값을 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

존은 <<왕좌의 게임>> 시리즈의 팬이다. 곧 새 시즌이 나오고, 존은 이 시즌을 보고 싶어 한다.

에피소드는 하루에 한 편씩 공개된다. 존은 매번 직접 내려받기 싫어서 대신 해 줄 프로그램을 작성하려고 한다. 각 에피소드는 별도의 파일이며, ii번째 에피소드 파일의 크기는 sis_i바이트다.

프로그램은 다음과 같이 동작한다. jj번째 요청은 다음 xjx_j바이트를 내려받으라는 뜻이다. 서버는 이 요청에 대해 파일의 다음 xjx_j바이트와 kk바이트의 부가 정보(헤더)를 담은 패킷을 돌려준다. 따라서 패킷의 크기는 xj+kx_j+k바이트이고, kk는 모든 요청에서 같다.

어떤 요청에서 파일의 마지막 바이트를 내려받으면 프로그램은 종료되고 더 이상 요청을 보내지 않는다. 다만 프로토콜상 파일 끝에 도달해 실제 유효 데이터가 xjx_j바이트보다 적더라도 패킷 크기는 여전히 xj+kx_j+k바이트다.

존은 프로그래밍을 잘 모른다. 그래서 모든 에피소드를 같은 요청 순서로 내려받는 단순한 프로그램만 쓸 수 있다. 인터넷 속도가 느리므로, 내려받는 패킷들의 전체 크기 합이 최소가 되기를 원한다.

제작진의 정보 유출 덕분에 존은 각 에피소드의 크기를 알고 있다. 모든 에피소드를 내려받는 데 필요한 패킷 크기 합의 최솟값을 구하시오.

입력

첫 줄에 에피소드 수 nn과 패킷 헤더의 크기 kk가 주어진다(1≤n≤100001 \le n \le 10000; 0≤k≤1090 \le k \le 10^9).

둘째 줄에는 각 에피소드의 크기 sis_i가 nn개 주어진다(1≤si≤1091 \le s_i \le 10^9).

출력

모든 에피소드를 내려받는 데 필요한 패킷 크기 합의 최솟값을 한 줄에 출력한다.

힌트

첫 번째 예시에서는 먼저 200바이트를 요청하고, 그다음 600바이트를 요청할 수 있다. 그러면 처음 세 에피소드는 첫 요청으로 내려받아 각각 200+1000=1200200+1000=1200바이트가 든다. 마지막 에피소드는 요청 두 번으로 받아 (200+1000)+(600+1000)=2800(200+1000)+(600+1000)=2800바이트가 든다. 합계는 1200+1200+1200+2800=64001200+1200+1200+2800=6400바이트다.

두 번째 예시에는 헤더가 없으므로 요청을 많이 보내도 괜찮다. 예를 들어 100바이트씩 나누어 요청할 수 있다.

예제2

  1. 예제 1

    입력
    4 1000
    100 200 200 800
    
    예상 출력
    6400
    
  2. 예제 2

    입력
    4 0
    100 200 800 200
    
    예상 출력
    1300