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。
如果可以选出这样的数,输出选出的数的个数,如果不能选出这样的数,输出-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之间。
第二行n个正整数,相邻两个数之间用一个空格隔开,每个数的值在1到100之间。
输出
一个数,表示选出的数的最小个数,如果无解,输出-1。
样例输入
5 12
2 6 2 7 1
样例输出
2