호텔 적립금
시간 제한2초메모리 제한512 MB
매일의 호텔 가격과 K포인트당 무료 숙박 하나라는 보상 규칙이 주어질 때, 전체 여행의 최소 총비용을 구한다.
문제
유럽을 여행하며 일 동안 매일 밤 다른 도시에서 묵으려고 한다. 도시마다 묵을 호텔은 이미 정해 두었으므로, 번째 밤에 묵을 방의 가격 를 모두 알고 있다 ().
숙소는 적립 제도를 운영하는 예약 사이트에서 예약한다. 이 사이트로 예약한 호텔에서 하룻밤을 묵으면 적립금이 1점 쌓인다. 적립금이 점 이상 모이면 언제든 점을 써서 아무 호텔에서나 하룻밤을 공짜로 묵을 수 있다. 다만 공짜로 묵은 밤에는 적립금이 쌓이지 않는다.
예를 들어 , 이고 가격이 , , , , , 인 경우를 보자. 앞의 네 밤을 모두 돈을 내고 묵으면 적립금 4점이 쌓이고, 이것으로 남은 두 밤을 공짜로 묵어 숙박비 을 낸다. 그런데 세 밤을 묵어 얻은 3점 중 2점을 네 번째 밤에 쓰면, 다섯 번째 밤은 돈을 내고 묵으면서 남은 2점으로 여섯 번째 밤을 공짜로 해결할 수 있다. 이때 숙박비는 이라 더 싸다.
숙박비 합계의 최솟값을 구하는 프로그램을 작성하라. 묵으려는 호텔에는 항상 빈 방이 있고, 도시를 방문하는 순서는 바꿀 수 없다.
입력
첫째 줄에 여행하는 밤의 수 과 공짜 숙박 한 번에 필요한 적립금 가 공백을 사이에 두고 주어진다 ().
둘째 줄에 개의 정수 이 공백을 사이에 두고 주어진다. 는 번째 밤에 묵을 방의 가격이다 ().
출력
숙박비 합계의 최솟값을 한 줄에 출력한다.