3043:C++ L13 选数

文件提交:无需freopen 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判
金币值:1
命题人:
提交:2 解决:1

题目描述

输入n个正整数和一个正整数h,请你从这n个数中选出若干个数,使它们的和大于等于h,我们的目的是使选出的数的个数尽可能的少。
 
如果可以选出这样的数,输出选出的数的个数,如果不能选出这样的数,输出-1。


例如有5个正整数2 6 2 7 1,h等于12,如果选出(1,2,2,7),共4个数,他们的和等于12,大于等于12;如果选出(6,7),共2个数,他们的和等于13,也大于等于12。当然还有(1,6,7)、(2,6,7)、(2,2,6,7)等选取方案都满足要求,可以证明,(6,7)选取方案中具有最少的个数2,故输出2。

输入

第一行两个正整数n(1≤n≤100)和h(1≤h≤10000),中间用一个空格隔开。
第二行n个正整数,相邻两个数之间用一个空格隔开,每个数的值在1到100之间。

输出

一个数,表示选出的数的最小个数,如果无解,输出-1。

样例输入

5 12 
2 6 2 7 1

样例输出

2