103. 华为OD-取出尽量少的球(200分)
难度 5- 标签:
题目描述
题解
题库
华为OD-取出尽量少的球(200分)
题目内容
某部门开展 开放日活动,其中有个从桶里取球的游戏,游戏规则如下:
有 个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,每个小桶装的小球数量记录在数组 中。
游戏开始时,要求所有桶的小球总数不能超过 。如果小球总数超过 ,则需对所有的小桶统一设置一个容量最大值 ,并需将超过容量最大值的小球拿出来,直至小桶里的小球数量小于 。
请您根据输入的数据,计算从每个小桶里拿出的小球数量?
- 限制规则一:所有小桶的小球总和小于 ,则无需设置容量值 ,并且无需从小桶中拿球出来,返回结果 。
- 限制规则二:如果所有小桶的小球总和大于 ,则需设置容量最大值 ,并且需从小桶中拿球出来,返回从每个小桶拿出的小球数量组成的数组。
输入描述
第一行输入 个正整数,数字之间使用空格隔开,其中:
- 第一个数字表示 ;
- 第二个数字表示 数组长度。
第二行输入 个正整数,数字之间使用空格隔开,表示 的每一项。
输出描述
从每个小桶里拿出的小球数量,并使用一维数组表示。
备注
- ;
- ;
- ;
- 。
样例1
输入
14 7
2 3 2 5 5 1 4
输出
[0,1,0,3,3,0,2]
说明
小球总数为 ,,超出范围了,需从小桶取球:
- ,取出球后,桶里剩余小球总和为 ,远小于 ;
- ,取出球后,桶里剩余小球总和为 ;
- ,取出球后,桶里剩余小球总和为 ,大于 。
因此 为 ,每个小桶小球数量大于 的都需要拿出来。
样例2
输入
3 3
1 2 3
输出
[0,1,2]
说明
小球总数为 ,,超出范围了,需从小桶中取球:
- ,则小球总数为 ,从 号桶取 个球, 号桶取 个球, 号桶取 个球。
样例3
输入
6 2
3 2
输出
[]
说明
小球总数为 ,,在范围内,无需从小桶取球。