拼多多-小熊吃糖

2019-07-27  本文已影响0人  葡萄肉多

有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])
上一篇 下一篇

猜你喜欢

热点阅读