传统题 1000ms 256MiB

奖品兑换

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目背景

运动会设置了奖品兑换点,同学们可以用积分兑换奖品。兑换点提供多种面值的代币,同学们需要用代币支付正好等于奖品价格的金额。

题目描述

小明想要兑换一个价值 XX 积分的奖品。兑换点提供 kk 种不同面值的代币,面值分别为 c1,c2,,ckc_1, c_2, \ldots, c_k(已按从大到小排序)。

这些代币有一个特殊性质:每种较大面值的代币都是较小面值代币的整数倍。例如面值可能是 100,50,10,5,1100, 50, 10, 5, 1100=2×50100 = 2 \times 5050=5×1050 = 5 \times 1010=2×510 = 2 \times 55=5×15 = 5 \times 1)。

小明希望用最少数量的代币凑出恰好 XX 积分。请输出每种代币需要使用的数量。如果无法恰好凑出 XX 积分,输出 -1

输入格式

第一行包含两个正整数 kkXX1k201 \le k \le 201X1091 \le X \le 10^9),分别表示代币种类数和需要支付的积分。

第二行包含 kk 个正整数 c1,c2,,ckc_1, c_2, \ldots, c_kc1>c2>>ck1c_1 > c_2 > \cdots > c_k \ge 1),表示各种代币的面值(从大到小排列)。保证大面值是小面值的整数倍。

输出格式

如果能恰好凑出 XX 积分,输出一行 kk 个整数,第 ii 个整数表示面值为 cic_i 的代币使用数量。

如果无法凑出,输出 -1

样例

5 168
100 50 10 5 1
1 1 1 1 3
3 7
6 4 2
-1

样例说明

样例 1:$100 \times 1 + 50 \times 1 + 10 \times 1 + 5 \times 1 + 1 \times 3 = 168$。

样例 2:面值 6,4,26, 4, 2 都是偶数,无法凑出奇数 77

【基础算法/STL训练】最后的训练赛

未参加
状态
已结束
规则
XCPC
题目
6
开始于
2026-1-23 14:00
结束于
2026-1-23 18:00
持续时间
4 小时
主持人
参赛人数
9