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
注意点
特になし。
別解
特になし。