Problem B

2nd Day
Problem B: Restaurant
Problemsetting by: Y.Izumi
Comments by: D.Mikurube
問題の方向性
 シミュレーション問題
 多数ある条件を読み落とさないようにしましょう
 というタイプの問題の中で、中程度の難易度
 ちょくちょく出るタイプの問題です
 回答提出 5 件 / 正解 2 件でした
 思ったよりチャレンジしてくれなかったなあ
 そんなに難しいわけじゃないはずなんだけど
問題概要
 レストランのコックをシミュレート
 Input:
 メニュー一覧 [一度に作れる数, かかる時間]
 注文一覧 [時刻, その注文で頼んだもの一覧]
 同じ時刻に複数の「注文」が来ることは無い
 同じ料理が複数含まれていることがある
 同じ注文中の料理の順番は無関係
 Output:
 各注文について、全て処理し終わった時刻
問題概要 (cont.)
 コックの行動 :
 基本的には来た注文から片付ける
 同じ注文中の優先順位: かかる時間 → メニュー順
 同じものが溜まっていたら一度に片付ける
 かかる時間は 1 つ作ってもまとめて作っても一緒
 一度に作れる数には限界がある
 ある客の注文を全部作り終わったらまとめて出す
解法
 まあ、がんばればどうとでもなりますが
解法 (cont.)
 まあ、がんばればどうとでもなりますが
 工夫のしどころとしては、
 注文を全部バラバラにして、
かかる時間 → メニュー順、でまとめてソート
 i:全注文, j: i~最後の注文 で2重ループ
 <注文時刻> → <完了時刻> の map に
結果を保存
 同じ時刻の注文は無いので、時刻が ID になる