#305. 优先购买

优先购买

优先购买

题目描述

小 A 有 MM 元预算。商店有 NN 个商品,每个商品有商品名 SS、价格 PP 和优先级 VV 三种属性,其中 VV 为正整数,且 VV 越小代表商品的优先级越高。

小 A 的购物策略为:

  • 总是优先买优先级最高的东西;
  • 如果有多个最高优先级商品,购买价格最低的;
  • 如果有多个优先级最高且价格最低的商品,购买商品名字典序最小的。

小 A 想知道能购买哪些商品。

输入格式

第一行两个正整数 M,NM, N,代表预算和商品数。

之后 NN 行,每行一个商品,依次为 Si Pi ViS_i\ P_i\ V_i,代表第 ii 个商品的商品名、价格、优先级。

数据保证不存在两个名字相同的商品。

输出格式

按照字典序从小到大的顺序,输出所有购买商品的商品名。

样例输入

20 4
apple 6 8
bus 15 1
cab 1 10
water 4 8

样例输出

bus
cab
water

样例解释

对于样例输入,小 A 有 2020 元预算,共 44 个商品。首先,优先级最高的商品是 bus(优先级 11),价格为 1515 元,购买后剩余 55 元。接下来,剩余商品中优先级最高的是 88,对应 apple(价格 66)和 water(价格 44),根据策略价格最低的优先,因此购买 water,花费 44 元,剩余 11 元。最后,剩余商品中优先级最高的是 cab(优先级 1010),价格为 11 元,购买后剩余 00 元。购买的顺序为 buswatercab,按题目要求以字典序从小到大输出,结果为 buscabwater

数据范围

对于所有测试点,保证 1Si101 \le |S_i| \le 101M,Pi1051 \le M, P_i \le 10^51N1031 \le N \le 10^31Vi101 \le V_i \le 10。商品名仅由小写字母组成且不存在两个相同的商品名。