传统题 1000ms 256MiB

弗拉德买东西

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

说明

弗拉德去商店买东西,他手里有若干个硬币,每个硬币只有一个,下标从 0 开始的长度为n的整数数组coins,表示可用的硬币的面值。 他想知道,用这些硬币购买价格从1k的商品中的任意一件都可以的话,还需要最少添加多少种不同金额的硬币。 如果 coins 中存在子序列的和为 x,那么 x 就是一个 可取得的金额 。 返回需要添加到数组中的 任意面值 硬币的 最小数量 ,使范围 [1, k] 内的每个整数都属于 可取得的金额 。(硬币金额均为整数)

输入

第一行输入两个整数数据n和k 第二行输入n个整数数字coins0,coins1,coins2,,coinsn1coins_0,coins_1, coins_2, \dots, coins_{n-1} (1ai1051 \le a_i \le 10^5)

  • 1k1051 \le k \le 10^5
  • 1coins.length1051 \le coins.length \le 10^5
  • 1coins[i]k1 \le coins[i] \le k

输出

输出一行表示最少添加的硬币个数

样例

3 20
1 1 1
3

解释:最少需要添加4,8,16,3种不同硬币各一枚

4 10
1 2 3 4
0

Limitation

1s, 1024KiB for each test case.