駐車場の料金の計算

  • 条件分岐
  • 問題 04
  • やさしい
  • 目安 11 分

入庫と出庫の時刻から、30 分ごとの料金、最初の無料の時間、24 時間ごとの上限を当てはめて、車ごとの料金と合計を出す。条件を順に分けて書く練習です。

本番の試験は PC で受けることが多いので、PC での練習をすすめます。スマホでも、読んで、書いて、採点するところまで動きます。

入力は標準入力から読み、答えは標準出力に書きます。1 テストあたり 3 秒までです。

問題

長く止めることもできる駐車場があります。時刻は、計測を始めたときからの経過時間を分で表した整数です。N 台の車について、入庫の時刻 s と出庫の時刻 t が与えられます。止めていた時間は d = t - s 分です。

料金は、次の決まりで計算します。

  1. d が 30 以下なら、料金は 0 円です (止めた時間が 30 分以下のときだけ無料です)
  2. d が 30 より大きいときは、入庫した時刻から 1440 分 (24 時間) ごとに区切ります。区切った 1 つ分の中では、30 分ごとに 200 円かかります。30 分に満たない端の時間も 200 円です
  3. 区切った 1 つ分の料金は、1500 円を上限にします。最後の区切りが 1440 分より短いときも、その中で同じ数え方をします

たとえば d が 100 分なら、30 分の区切りが 4 つ (30、30、30、10 分) で 800 円です。d が 1500 分なら、最初の 1440 分は 200 × 48 = 9600 円ですが上限で 1500 円、残りの 60 分は 400 円で、合わせて 1900 円です。無料になるのは d が 30 以下のときだけで、d が 31 分なら 30 分の区切りが 2 つで 400 円です。

車ごとの料金を入力の順に 1 行ずつ出力し、最後の行に N 台の料金の合計を出力してください。

入力の形式

N
s_1 t_1
s_2 t_2
...
s_N t_N

1 行目に車の台数 N、2 行目から N 行に、1 行に 1 台ずつ入庫の時刻 s_i と出庫の時刻 t_i が空白 1 つで区切られて並びます。

出力の形式

N + 1 行を出力します。i 行目に i 台目の料金を、N + 1 行目に全部の車の料金の合計を、どれも単位を付けずに整数で書きます。

制約

  • N は、1 以上 100000 以下の整数です
  • s_i と t_i は、0 以上 1000000 以下の整数です
  • どの車も、s_i は t_i より小さい値です

入力と出力の例

例 1

1 台目は 20 分で無料、2 台目は 100 分で 800 円、3 台目は 1500 分で 1900 円です。合計は 2700 円です。

入力

3
0 20
60 160
1000 2500

出力

0
800
1900
2700

例 2

1 台目はちょうど 30 分で無料、2 台目は 31 分で 400 円です。3 台目はちょうど 1440 分で、上限の 1500 円です。

入力

3
10 40
10 41
0 1440

出力

0
400
1500
1900

ヒント

まだ開いていません

付箋は 3 枚。下の段ほど答えに近づきます

  1. ヒント 2

  2. ヒント 3答えに近い

main.py
import sys

data = sys.stdin.read().split()
n = int(data[0])
cars = [(int(data[1 + 2 * i]), int(data[2 + 2 * i])) for i in range(n)]

# ここから書く

入力

出力

「実行する」を押すと、ここに出力が出ます

できているか「提出して採点」を押すと、隠れたテストを全部走らせて、通ったかをここに出します