問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
よくクラスの題材を扱う際に、「クラスは車の設計書」といった例が出てきます。
スーパーカー販売店に勤務しながらクラスの勉強をしていた paiza 君はスーパーカーの走る様子をクラスを用いてシミュレーションしてみようと考えました。
ただ車を走らせてもつまらないので、陸を走るスーパーカーに加えて、空を飛べるスーパースーパーカー ・ テレポートできるスーパースーパースーパーカー もシミュレーションに加えた
番号 1 〜 N の N 台のシミュレーションをすることにしました。
それぞれの車について、初めに入っている燃料の量 l と燃費 f が定まっており、加えて、車種に応じて次のような機能を持ちます。
・スーパーカーrun
燃料を 1 消費し、 f (km) 走る。
燃料が 0 の場合は何も起こらない。
・スーパースーパーカーrun
燃料を 1 消費し、 f (km) 走る。
燃料が 0 の場合は何も起こらない。fly
燃料を 5 消費し、 f^2 (km) 飛行する。
燃料が 5 未満の場合は run を行う。
・スーパースーパースーパーカーrun
燃料を 1 消費し、 f (km) 走る。
燃料が 0 の場合は何も起こらない。fly
燃料を 5 消費し、 2 * f^2 (km) 飛行する。
燃料が 5 未満の場合は run を行う。teleport
燃料を f^2 消費し、 f^4 (km) 移動する。
燃料が f^2 未満の場合は fly を行う。
シミュレートする車の台数 N と機能を使う回数 K , N 台の車の車種と機能を使った車の番号と使った機能が与えられるので、全てのシミュレーションが終わった後の、各車ごとの総移動距離を求めてください。
N K
k_1 l_1 f_1
...
k_N l_N f_N
n_1 func_1
...
n_K func_K
全てのシミュレーションを終えたときの i 番の車の総移動距離 len_i を以下の形式で全ての車について出力してください。
len_1
...
len_N
・ 与えられる値は全て整数
・ 1 ≦ N , K ≦ 10^5
・ k_i (1 ≦ i ≦ N) は "supercar","supersupercar","supersupersupercar" のいずれか
・ 1 ≦ l_i ≦ 10^5 , 1 ≦ f_i ≦ 100(1 ≦ i ≦ N)
・ 1 ≦ n_i ≦ N (1 ≦ i ≦ K)
・ func_i (1 ≦ i ≦ K) は "run" , "fly" , "teleport" のいずれか
・ 未定義の機能が呼び出されることはないことが保証されている
3 6
supercar 1 1
supersupercar 10 10
supersupersupercar 100 5
1 run
2 run
2 fly
3 run
3 fly
3 teleport
1
110
680
5 10
supersupercar 1102 67
supersupercar 63296 25
supersupersupercar 47388 32
supersupercar 30968 68
supersupercar 53668 78
2 run
3 teleport
1 fly
2 run
4 run
5 fly
5 run
2 fly
4 run
1 fly
8978
675
1048576
136
6162