연료비 최소화
면접 대비시간 제한1초메모리 제한128 MB
용량 G인 연료 탱크로 각 주유소의 가격이 주어진 경로를 이동할 때 최소 비용을 구하고, 도달할 수 없으면 -1을 출력한다.
문제
한 운전자가 장거리 여행을 떠난다. 트럭의 연료 탱크는 최대 단위의 연료를 담을 수 있다 (). 이 트럭은 연비가 나빠서 이동 거리 단위마다 연료를 정확히 단위씩 소비하며, 전체 이동 거리는 단위이다 ().
이동 중 여러 번 주유해야 할 수 있으므로, 운전자는 경로상의 모든 주유소 개를 조사했다 (). 번째 주유소는 출발점에서 거리 지점에 있으며 (), 연료를 단위당 의 가격에 판매한다 ().
트럭은 출발할 때 탱크에 정확히 단위의 연료를 가지고 있다 (). 거리 의 목적지에 도착하기 위해 연료비로 지불해야 하는 최소 금액을 구하여라. 목적지에 도착할 수 없다면 대신 을 출력한다.
참고: 정답은 부호 있는 비트 정수 범위를 벗어날 수 있다.
입력
- 첫째 줄: 공백으로 구분된 네 정수 , , , .
- 번째 줄부터 번째 줄까지: 번째 줄에는 번째 주유소의 위치와 단위당 가격을 나타내는 두 정수 와 가 주어진다.
출력
- 목적지에 도착하기 위한 최소 비용을 한 줄에 출력한다. 도착할 수 없다면 을 출력한다.
힌트
첫 번째 예시에서 경로는 위치 에서 까지 이어진다. 트럭은 용량 짜리 탱크에 단위의 연료를 가지고 출발하며, 주유소는 개이다.
최적의 한 가지 방법: 위치 의 주유소까지 만큼 이동한 뒤 그곳에서 단위를 구매하고(비용 ) 위치 의 주유소에 도달한다. 그곳에서 탱크를 가득 채우고(비용 ), 위치 에서 단위를 더 구매한다(비용 ). 총 비용은 이다.
탐욕적 전략이 유효하다: 각 주유소에서 탱크를 가득 채운 상태로 도달할 수 있는 범위 안에 더 싼 주유소가 있으면 그곳에 도달할 만큼만 구매하고, 없으면 탱크를 가득 채운 뒤 도달 가능한 가장 싼 주유소로 이동한다.