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

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

연료비 최소화

면접 대비

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

요약
용량 G인 연료 탱크로 각 주유소의 가격이 주어진 경로를 이동할 때 최소 비용을 구하고, 도달할 수 없으면 -1을 출력한다.
난이도

보통10점 중 7점

유형
그리디, 스택, 배열, 정렬
정답자
아직 제출이 없습니다

문제

한 운전자가 장거리 여행을 떠난다. 트럭의 연료 탱크는 최대 GG 단위의 연료를 담을 수 있다 (1≤G≤1,000,0001 \le G \le 1{,}000{,}000). 이 트럭은 연비가 나빠서 이동 거리 11 단위마다 연료를 정확히 11 단위씩 소비하며, 전체 이동 거리는 DD 단위이다 (1≤D≤1,000,000,0001 \le D \le 1{,}000{,}000{,}000).

이동 중 여러 번 주유해야 할 수 있으므로, 운전자는 경로상의 모든 주유소 NN개를 조사했다 (1≤N≤50,0001 \le N \le 50{,}000). ii번째 주유소는 출발점에서 거리 XiX_i 지점에 있으며 (0≤Xi≤D0 \le X_i \le D), 연료를 단위당 YiY_i의 가격에 판매한다 (1≤Yi≤1,000,0001 \le Y_i \le 1{,}000{,}000).

트럭은 출발할 때 탱크에 정확히 BB 단위의 연료를 가지고 있다 (0≤B≤D0 \le B \le D). 거리 DD의 목적지에 도착하기 위해 연료비로 지불해야 하는 최소 금액을 구하여라. 목적지에 도착할 수 없다면 대신 −1-1을 출력한다.

참고: 정답은 부호 있는 3232비트 정수 범위를 벗어날 수 있다.

입력

  • 첫째 줄: 공백으로 구분된 네 정수 NN, GG, BB, DD.
  • 22번째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에는 ii번째 주유소의 위치와 단위당 가격을 나타내는 두 정수 XiX_i와 YiY_i가 주어진다.

출력

  • 목적지에 도착하기 위한 최소 비용을 한 줄에 출력한다. 도착할 수 없다면 −1-1을 출력한다.

힌트

첫 번째 예시에서 경로는 위치 00에서 D=17D = 17까지 이어진다. 트럭은 용량 1010짜리 탱크에 33 단위의 연료를 가지고 출발하며, 주유소는 44개이다.

최적의 한 가지 방법: 위치 22의 주유소까지 22만큼 이동한 뒤 그곳에서 22 단위를 구매하고(비용 40×240 \times 2) 위치 55의 주유소에 도달한다. 그곳에서 탱크를 가득 채우고(비용 7×107 \times 10), 위치 1010에서 22 단위를 더 구매한다(비용 12×212 \times 2). 총 비용은 174174이다.

탐욕적 전략이 유효하다: 각 주유소에서 탱크를 가득 채운 상태로 도달할 수 있는 범위 안에 더 싼 주유소가 있으면 그곳에 도달할 만큼만 구매하고, 없으면 탱크를 가득 채운 뒤 도달 가능한 가장 싼 주유소로 이동한다.

예제1

  1. 예제 1

    입력
    4 10 3 17
    2 40
    9 15
    5 7
    10 12
    
    예상 출력
    174