C19 - Gasoline Optimization Problem Editorial /

Time Limit: 10 sec / Memory Limit: 1024 MB

配点: 1000

問題文

ALGO 街道は、全長 L キロメートルの直線状の道路です。街道の一方の端をスタート地点とし、もう一方の端をゴール地点とします。

この街道には N 個のガソリンスタンドがあります。i 個目 (1 \leq i \leq N) のガソリンスタンドはスタートから A_i キロメートルの地点にあり、価格は 1 リットル当たり C_i 円です。

燃費が 1 km/L であり、最大 K リットルのガソリンを貯めることができる車を利用したとき、スタートからゴールまで行くことが可能か判定し、もし可能ならば最小何円のガソリン代が必要かを求めるプログラムを求めてください。

ただし、最初の時点でガソリンは満タンであるとします。また、ガソリンの残量がちょうど 0 リットルになったときにガソリンスタンドで給油したり、ゴールに到達したりすることはできるものとします。

制約

  • 0 \leq N \leq 700000
  • 1 \leq K \leq L \leq 700000
  • 1 \leq A_1 \leq A_2 \leq \dots \leq A_N \leq L - 1
  • 1 \leq C_i \leq 10^{12}
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

N L K
A_1 C_1
A_2 C_2
 \vdots
A_N C_N

出力

スタートからゴールまで行くために必要なガソリン代の最小値を 1 行で出力してください。ただし、スタートからゴールまで行くことが不可能な場合は、代わりに -1 と出力してください。

部分点

この問題では、N \leq 100, L \leq 100 を満たすケースすべてに正解すれば、部分点として 500 点を獲得します。


入力例 1

3 11 4
4 70
6 50
9 100

出力例 1

440

下図のように給油するのが最適です。ガソリンスタンド 1, 2, 3 でそれぞれ 2, 4, 1 リットルを給油するので、ガソリン代は 70 \times 2 + 50 \times 4 + 100 \times 1 = 440 円となります。


入力例 2

1 100 60
39 1

出力例 2

-1

たとえガソリンスタンド 1 で車のガソリンを満タンにしたとしても、スタートから 99 キロメートルの地点でガソリンが尽き、ゴールに到達することはできません。


入力例 3

6 100 30
19 1700000000
44 1400000000
44 1900000000
57 1600000000
78 1300000000
91 1500000000

出力例 3

100800000000