バス代 〜 横へな 2013.4.6

問題

バス代を計算する。
年齢区分は

幼児 子供 大人
記号 I C A
意味 小学校入学前 小学生 中学生以上
通常料金 後述 大人の半額(10円未満切り上げ) 大人料金
となっている。
幼児については となっている。
年齢区分とは別に料金区分がある。
通常 定期券あり 福祉割引
記号 n p w
料金 通常料金 無料 通常料金の半額(10円未満切り上げ)
例えば。
大人通常で 210円の区間を下表の乗客が乗ったとする:
記号 意味 人数
Ap 大人・定期券あり 1
Cn 子供・通常 1
In 幼児・通常 1
Iw 幼児・福祉割引 2
大人が1名なので、幼児が2名無料。幼児は3名いるので有料の幼児が1名。その1名を「通常」区分の幼児にすると損なので、「福祉割引」区分の幼児を有料にする。
したがって、料金が発生するのは「子供・通常」が1名、「幼児・福祉割引」が1名。
「子供・通常」は210円の半額(10円未満切り上げ)なので 110円。福祉割引の幼児は「通常」区分の幼児の半額(10円未満切り上げ)なので、60円。
したがって、バス代は合計 110円+60円 で 170円 となる。

入力と出力

入力は 210:Cn,In,Iw,Ap,Iw のような形式。
順序はバスに乗った順であり、区分によって整列されていたりはしない。
コロンの前に大人通常の料金。コロンの後にコンマ区切りで記号が並ぶ。コロンやコンマの前後に空白はない。
記号は、年齢区分(大文字)+料金区分(小文字)からなる二文字の文字列。

補足

サンプルデータ

# 入力 期待
0 210:Cn,In,Iw,Ap,Iw 170
1 220:Cp,In 110
2 230:Cw,In,Iw 240
3 240:In,An,In 240
4 250:In,In,Aw,In 260
5 260:In,In,In,In,Ap 260
6 270:In,An,In,In,Ip 410
7 280:Aw,In,Iw,In 210
8 200:An 200
9 210:Iw 60
10 220:Ap 0
11 230:Cp 0
12 240:Cw 60
13 250:In 130
14 260:Cn 130
15 270:Ip 0
16 280:Aw 140
17 1480:In,An,In,In,In,Iw,Cp,Cw,In,Aw,In,In,Iw,Cn,Aw,Iw 5920
18 630:Aw,Cw,Iw,An,An 1740
19 340:Cn,Cn,Ip,Ap 340
20 240:Iw,Ap,In,Iw,Aw 120
21 800:Cw,An,Cn,Aw,Ap 1800
22 1210:An,Ip,In,Iw,An,Iw,Iw,An,Iw,Iw 3630
23 530:An,Cw,Cw 810
24 170:Aw,Iw,Ip 90
25 150:In,Ip,Ip,Iw,In,Iw,Iw,In,An,Iw,Aw,Cw,Iw,Cw,An,Cp,Iw 580
26 420:Cn,Cw,Cp 320
27 690:Cw,In,An,Cp,Cn,In 1220
28 590:Iw,Iw,Cn,Iw,Aw,In,In,Ip,Iw,Ip,Aw 1200
29 790:Cw,Cn,Cn 1000
30 1220:In,In,An,An,In,Iw,Iw,In,In,Ip,In,An,Iw 4590
31 570:Cw,Cn,Cp 440
32 310:Cn,Cw,An,An,Iw,Cp,Cw,Cn,Iw 1100
33 910:Aw,In,Iw,Iw,Iw,Iw,Iw,An,Cw,In 2290
34 460:Iw,Cw,Cw,Cn 590
35 240:Iw,Iw,In,Iw,In,In,Cn,In,An 780
36 1240:In,In,In,Ap,In,Cw,Iw,Iw,Iw,Aw,Cw 2170
37 1000:Iw,Ip,In,An,In,In,In,An,In,Iw,In,In,Iw,In,Iw,Iw,Iw,An 5500
38 180:In,Aw,Ip,Iw,In,Aw,In,Iw,Iw,In 330
39 440:In,Ip,Cp,Aw,Iw,In,An 660
40 1270:Ap,In,An,Ip,In,Ip,Ip 1270

C/C++/Java 用のテストデータ