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

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

에피소드 다운로드

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

요약
각 요청마다 고정 크기 헤더 k가 붙을 때, n개 에피소드를 모두 내려받는 데 필요한 총 패킷 크기의 최솟값을 구한다.
난이도

보통10점 중 7점

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

문제

Джон은 <<왕좌의 모든 것>>이라는 드라마의 팬이다. 곧 새 시즌이 공개될 예정이고, Джон은 그것을 보고 싶어 한다.

에피소드는 하루에 하나씩 공개된다. Джон은 매번 직접 내려받는 것이 귀찮아서, 대신 내려받아 줄 프로그램을 작성하려고 한다. 각 에피소드는 별도의 파일이고, ii번째 에피소드가 담긴 파일의 크기는 s_is\_i바이트이다.

Джон의 프로그램은 다음과 같이 동작한다. 서버에 요청을 하나씩 보내는데, jj번째 요청은 <<다음 x_jx\_j바이트를 내려받기>>이다. 이런 요청에 대한 응답으로 서버는 파일의 다음 x_jx\_j바이트가 담긴 데이터 패킷과 kk바이트의 각종 부가 정보가 담긴 헤더를 보낸다. 따라서 패킷의 크기는 x_j+kx\_j+k바이트이고, kk의 값은 모든 요청에서 동일하다.

어떤 요청의 결과로 파일의 마지막 바이트까지 내려받으면, 프로그램은 작업을 끝내고 서버에 더 이상 요청을 보내지 않는다. 하지만 프로토콜 구조상 파일의 끝에 도달해 실제로 내려받은 유효 정보가 x_jx\_j바이트보다 적더라도 패킷의 크기는 x_j+kx\_j+k이다.

Джон은 프로그래밍을 전혀 몰라서, 각 에피소드를 내려받을 때 서버에 항상 같은 요청 순서를 보내는 단순한 프로그램만 작성할 수 있다. 인터넷이 느려서 그는 내려받은 모든 패킷 크기의 합이 가능한 한 작기를 원한다.

제작진의 정보 유출 덕분에 Джон은 각 에피소드의 크기를 알고 있다. 모든 에피소드를 내려받기 위해 내려받아야 할 패킷 크기의 최소 합을 구하도록 도와주자.

입력

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

둘째 줄에 nn개의 정수 s_is\_i가 주어진다. s_is\_i는 에피소드의 크기이다 (1≤s_i≤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