#t147. 优先购买

优先购买

优先购买

题目描述

小 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 元。购买的顺序为 bus、water、cab,按题目要求以字典序从小到大输出,结果为 bus、cab、water。

数据范围

对于所有测试点,保证 1≤∣Si∣≤101 \le |S_i| \le 10,1≤M,Pi≤1051 \le M, P_i \le 10^5,1≤N≤1031 \le N \le 10^3,1≤Vi≤101 \le V_i \le 10。商品名仅由小写字母组成且不存在两个相同的商品名。