有n只小熊,他们有着各不相同的战斗力。每次他们吃糖时,会按照战斗力来排,战斗力高的小熊拥有优先选择权。前面的小熊吃饱了,后面的小熊才能吃。每只小熊有一个饥饿值,每次进食的时候,小熊们会选择最大的能填饱自己当前饥饿值的那颗糖来吃,可能吃完没饱会重复上述过程,但不会选择吃撑。
现在给出n只小熊的战斗力和饥饿值,并且给出m颗糖能填饱的饥饿值。
求所有小熊进食完之后,每只小熊剩余的饥饿值。
输入描述
第一行两个正整数n和m,分别表示小熊数量和糖的数量。(n <= 10, m <= 100)
第二行m个正整数,每个表示着每颗糖能填充的饥饿值。
接下来的n行,每行2个正整数,分别代表每只小熊的战斗力和当前饥饿值。
题目中所有输入的数值小于等于100。
输出描述
输出n行,每行一个整数,代表每只小熊剩余的饥饿值。
输入例子1:
2 5
5 6 10 20 30
4 34
3 35
输出例子1:
4
0
思路
模拟题 ,按题目步骤
代码
from operator import itemgetter
n,m = map(int,input().split())
sugar = sorted(list(map(int,input().split())),reverse=True)
bear = {}
for i in range(n):
b,x = map(int,input().split())
bear[i] = [b,x]
for item in sorted(bear.items(),key=itemgetter(1),reverse=True):
for i in range(m):
if item[1][1] >= sugar[i]:
item[1][1] -= sugar[i]
sugar[i] = 0
for i in range(n):
print(bear[i][1])
网友评论