虽然其实很简单,但不知为何标注为“难题”
全局题号
21590
34:(201709)购买礼物
描述
要过新年了,小明想给许多同学购买礼物,选好礼物结账时发现带的钱不够,所以只能选择留下一部分。
每个要送礼物的同学在他心中有个优先级,小明决定优先级最大的优先购买,他为每个人挑选的礼物价格不同,下面请你算出小明能给多少人买到礼物。
输入
输入有N+1行,第一行两个数字,选的礼物总数N和带的钱的总数M,后面N行每行包含两个数字,第一个数字表示礼物的价格P,第二个数字表示这个礼物要送的人在他心中的优先级L,越大越优先购买,优先级不能相同(N<100 M<1000 P<100 L<200 N,M,P,L均为整数)
输出
输出一行,能买的礼物个数
样例输入
5 10 2 4 6 3 1 5 7 2 1 1
样例输出
3
提示
若优先级最高的礼物价格超出带的钱总数,视为不能购买任何礼物(优先级较高的人没有,则不会考虑给优先级低的买)
来源
计算概论医学部2017-郭怡欣(罗英伟)难题
n, m = list(map(int,input().split()))
people_list = []
for i in range(n):
line = list(map(int,input().split()))
people_list.append(line)
people_list.sort(key=lambda x: x[1], reverse=True)
for i in range(n):
if m >= people_list[i][0]:
m -= people_list[i][0]
else:
print(i)
break