No.36 水道料金 (Water Rate)


時間制限:$2.0sec$ / メモリ制限:$256MB$

問題文

JOI 君が住んでいる地域には水道会社が X 社と Y 社の 2 つある.2 つの会社の 1 ヶ月の水道料金は,1 ヶ月の水道の使用量に応じて次のように決まる.

  • X 社: 1 リットル あたり A 円かかる.
  • Y 社: 基本料金は B 円である.使用量が C リットル以下ならば,料金は基本料金 B 円のみがかかる.使用量が C リットルを超えると基本料金 B 円に加えて追加料金がかかる.追加料金は使用量が C リットルを 1 リットル超えるごとに D 円である.

JOI 君の家では 1 ヶ月の水道の使用量が P リットルである.

水道料金ができるだけ安くなるように水道会社を選ぶとき,JOI 君の家の 1 ヶ月の水道料金を求めよ.

入力

入力は 5 行からなり,1 行に 1 つずつ整数が書かれている. 1 行目には X 社の 1 リットルあたりの料金 A が書かれている. 2 行目には Y 社の基本料金 B が書かれている. 3 行目には Y 社の料金が基本料金のみになる使用量の上限 C が書かれている. 4 行目には Y 社の 1 リットルあたりの追加料金 D が書かれている. 5 行目には JOI 君の家の 1 ヶ月の水道の使用量 P が書かれている.

書かれている整数 A, B, C, D, P はすべて 1 以上 10000 以下である.

出力

JOI 君の家の 1 ヶ月の水道料金を表す整数を 1 行で出力せよ.

入出力例

入力1

9
100
20
3
10

出力1

90

入出力例 1 では,JOI 君の家の 1 ヶ月の水道の使用量は 10 リットルである.

  • X 社の水道料金は 9 × 10 = 90 円である.
  • JOI 君の家の 1 ヶ月の水道の使用量は 20 リットル以下なので,Y 社の水道料金は基本料金の 100 円である.

JOI 君の家は水道料金がより安い X 社を選ぶ.そのときの JOI 君の家の 1 ヶ月の水道料金は 90 円である.

入力2

8
300
100
10
250

出力2

1800

入出力例 2 では,JOI 君の家の 1 ヶ月の水道の使用量は 250 リットルである.

  • X 社の水道料金は 8 × 250 = 2000 円である.
  • JOI 君の家の 1 ヶ月の水道の使用量は 100 リットル以上で,超過量は 250 - 100 = 150 リットルである.よって,Y 社の水道料金は基本料金の 300 円に加えて 10 × 150 = 1500 円の追加料金がかかり,合計の水道料金は 300 + 1500 = 1800 円である.

JOI 君の家は水道料金がより安い Y 社を選ぶ.そのときの JOI 君の家の 1 ヶ月の水道料金は 1800 円である.





解説


この問題は,肩慣らしとJOI予選の出題形式に慣れてもらうことを意図して出題されている.

X 社の水道料金は A × P によって計算できる.

Y 社の水道料金を求めるには,条件分岐を用いる.

  • P ≦ C のとき,Y 社の水道料金は B である.
  • P > C のとき,Y 社の水道料金は B + (P - C) × D によって計算できる.

2 つの会社の水道料金を計算して変数に保存しておき,条件分岐を用いて 2 つの内の小さい方を出力すればよい.ライブラリの中に最小値を求める関数がある場合は,それを用いてもよい.(例えば,C++ の std::min など.)