AlgoMooc
← 返回题库

P2473. 网上商城优惠活动

中等通过率 31% · 提交 191 · 通过 60
模拟枚举数学贪心

小慕正在参与一个电商平台的促销活动,平台发放了三种优惠券:、打折券、无门槛券。具体规则如下: - 满减券:每满100元可减10元,使用数量无限制。例如,购物金额在100~199元之间可使用1张减10元,200~299元之间可使用2张减20元,以此类推; - :每次限用1张,例如100元的商品,折后为92元; - 无门槛5元券:使用数量无限制,直接减5元。 每次购物最多可使用两种不同类型的优惠券,两种优惠可以叠加使用(叠加时以优惠后的价格计算)。以购物200元为例: - 先使用92折券,价格变为184元,再使用1张满减券减10元,最终价格为174元; - 先使用2张满减券减20元,价格变为180元,再使用92折券,折后为165元(165.6向下取整)。 不同使用顺序会导致不同优惠价格,最终以最优惠的价格为准。 在一次购物中,同一类型的优惠券若使用多张,必须一次性全部使用,不能分多次拆开使用(例如不允许先使用1张满减券,再用打折券,再使用1张满减券)。 小慕需要设计一种方法,帮助自己在购物时用最少的优惠券获得最优的优惠价格。优惠后的价格越低越好;若优惠后价格相同,则使用的优惠券数量越少越好。小慕也可以选择不使用任何优惠券。需要注意的是,每位用户只能参与一次活动,且每人拥有的优惠券种类和数量相同。

提示:带虚线的词点一下有通俗解释。

输入描述

- 第一行:每个人拥有的优惠券数量(数量取值范围为[0,10]),按满减、打折、无门槛的顺序输入 - 第二行:表示购物的人数n(1 ≤ n ≤ 10000) - 最后n行:每一行表示某个人优惠前的购物总价格(价格取值范围(0, 1000] ,都为整数)。 - 约定:输入都是符合题目设定的要求的

输出描述

- 每行输出每个人每次购物优惠后的最低价格以及使用的优惠券总数量 每行的输出顺序和输入的顺序保持一致 - 备注: 优惠券数量都为整数,取值范围为[0, 10] 购物人数为整数,取值范围为[1, 10000] 优惠券的购物总价为整数,取值范围为 (0, 1000] 优惠后价格如果是小数,则向下取整,输出都为整数。

示例

示例 1

输入

3 2 5
3
100
200
400

输出

65 6
155 7
338 4

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。