CF730F Ber Patio
题目描述
Polycarp 是「Ber Patio」餐厅的常客,他特别喜欢在那里吃午饭。
「Ber Patio」为常客推出了一项积分折扣计划。顾客可以通过积分来部分抵扣在餐厅的消费。
假设顾客当前拥有 $ b $ 个积分,并需要支付 $ r $ 个布尔(餐厅货币单位)来支付一次午餐。在这种情况下,顾客可以使用积分(1 积分等于 1 布尔)来减免部分支付金额,但最多只能用积分覆盖支付金额的一半。此外,每消费 10 布尔,顾客将获得 1 个积分。
具体规则如下:
1. 顾客可以选择使用 $ x $ 个积分来支付($ 0 \le x \le \frac{r}{2} $),
2. 之后,她的积分余额将减少 $ x $,
3. 她支付 $ r - x $ 个布尔,
4. 积分余额将根据支付额增加 $ \lfloor \frac{r - x}{10} \rfloor $,即向下取整的整数部分。
起初,Polycarp 账户上有 $ b $ 个积分。他计划连续 $ n $ 天在「Ber Patio」用餐,并估计每天的账单金额为 $ a_1, a_2, \ldots, a_n $,其中 $ a_i $ 表示第 $ i $ 天的账单金额。因此,所有账单金额的总和不超过 $ 10^5 $ 布尔。
请编写一个程序,帮助计算出 Polycarp 需要支付的最少布尔数,并给出最佳的积分使用策略。
输入格式
第一行包含两个整数 $ n $ 和 $ b $($ 1 \le n \le 5000 $,$ 0 \le b \le 10^5 $),分别表示连续用餐的天数和初始积分数量。
第二行包含一个整数序列 $ a_1, a_2, \ldots, a_n $($ 1 \le a_i \le 1000 $),表示每天的账单金额。
保证所有账单金额的总和不超过 $ 10^5 $ 布尔。
输出格式
第一行输出在这 $ n $ 天内,Polycarp 最少需要支付的布尔总数。
第二行输出一个整数序列 $ b_1, b_2, \ldots, b_n $,表示每一天使用的积分数量。如果有多种方案,按任意一种输出即可。
**本翻译由 AI 自动生成**