ABC465 B - Parking 2

駐車場 2

考え方

少し計算方法がややこしいだけの問題。

ポイントは、$L$ 時から $R$ 時の料金の扱い方。
これを、$X$ 円になると考えず、通常より $X-Y$ 円追加料金(または値引き)が発生すると考える。
すると、とりあえず全体を $Y$ 円であるとして料金計算した後、追加料金や値引きを追加すればよくなる。

まず、基本料金を求める。
これは、$Y$ 円で $B-A$ 時間駐車したのだから、これらの積でよい。

次に、追加料金または値引きを求める。
差分が発生し始めるのは、該当時間内の利用が始まったときなので、$L$ と $A$ の大きい方。
差分が発生し終わるのは、該当時間内の利用が終わったときなので、$R$ と $B$ の小さい方。
後者から前者を引いた値が $0$ より大きければ、それが追加料金または値引きが発生した長さである。
その長さに $X-Y$ をかけた値が、正なら追加料金、負なら値引き分となる。

両者を足し合わせたものが答えとなる。

入力例1での動作

入力を受け取る。

x: 700
y: 300
l: 9
r: 17
a: 7
b: 21

すべての時間で $Y$ 円かかったと仮定する。
駐車時間は $21-7=14$ 時間である。
よって、基本料金として $300 \times 14 = 4200$ 円かかる。

result: 4200

次に、$X$ 円の時間帯に何時間駐車したかを求める。
$9$ 時から $17$ 時までの $8$ 時間が該当する。

min(b,r): 17
max(a,l): 9
d: 8

追加料金分を加算する。
$1$ 時間当たり $700-300 = 400$ 円追加で発生する。
$8$ 時間分なら $400 \times 8 = 3200$ 円で、これを基本料金に加算する。

(x-y)*d: 3200
result: 7400

注意点

特になし。

別解

特になし。