参照で受け取る在庫台帳
倉庫の在庫を品名 → 個数として std::map に入れ、n 個の命令を順に処理せよ。
命令ごとに関数を一つずつ作り、在庫を変える関数は map を参照(&)で、読むだけの関数は const 参照で受け取る。
- add 品名 k:その品を k 個足し、足した後の個数を出力する。
- get 品名:その品の個数を出力する。
ない品なら 0 を出力し、台帳に新しく書き込まない。
- use 品名 k:その品が k 個以上あれば k 個減らし、残りの個数を出力する。
残りが 0 になったらその品を台帳から消す。
k 個より少ないか、ない品なら何も変えずに -1 を出力する。
すべての命令が終わったら、台帳に残った品の数 m を出力し、続けて m 行に "品名 個数" を品名の辞書順(英小文字の文字列比較)で出力する。
- 入力
- 1 行目に n(1 ≤ n ≤ 1000)、続く n 行に命令が一つずつ。
品名は英小文字 1〜10 文字、1 ≤ k ≤ 1000 - 出力
- 命令ごとに 1 行、次に m、次に m 行の "品名 個数"
7 add apple 5 add kiwi 2 get pear use apple 3 use kiwi 5 use kiwi 2 get apple
5 2 0 2 -1 0 2 1 apple 2