用引用修改,用 lower_bound 查找
把 n 件商品的名字、价格和库存存进结构体(struct)的 std::vector,用 m 条命令修改后,回答 q 个查询。
按名字查找商品的函数以引用(Item&)返回 vector 中的元素,修改函数接收该引用并就地修改元素。
处理完所有命令后,用传入 lambda 比较函数的 std::sort 按价格从低到高排列,价格相同时按名字的字典序排列。
查询用 std::lower_bound 回答。
第一行是 n,接下来 n 行为 "名字 价格 库存"。
下一行是 m,接下来 m 行每行一条命令,为 "sell 名字 k"、"restock 名字 k"、"price 名字 p" 之一。
sell 在库存不少于 k 时减去 k,不足时什么也不改。
restock 把库存加上 k。
price 把价格改为 p。
下一行是 q,接下来 q 行每行一个整数 x。
对每个查询,输出排好的列表中价格低于 x 的商品数 c,以及价格不低于 x 的第一件商品,格式为 "c 名字 价格 库存"。
若没有这样的商品,输出 "c none"。
- 输入
- 1 ≤ n ≤ 1000,0 ≤ m ≤ 1000,1 ≤ q ≤ 1000。
名字为 1 到 8 个小写英文字母且互不相同,命令中只出现已有的名字。
1 ≤ 价格, p ≤ 1,000,000,000。
初始库存为 0 到 1000,1 ≤ k ≤ 1,000,000。
1 ≤ x ≤ 1,000,000,001(均为整数) - 输出
- 每个查询一行
4 pear 7 1 fig 7 2 apple 9 3 kiwi 2 4 3 sell fig 2 sell kiwi 5 price apple 7 4 7 3 1 8
1 apple 7 3 1 apple 7 3 0 kiwi 2 4 4 none
2 tea 10 5 jam 20 5 2 restock tea 3 price tea 30 3 20 21 31
0 jam 20 5 1 tea 30 8 2 none