题目描述
小码君在悬崖边发现了一株灵芝,小码君想把灵芝摘下来煲汤。
小码君共有N个梯子(1 ≤ N ≤ 20,000),每个梯子有自己的高度Hi(1 ≤ Hi ≤ 10,000),N个梯子的总高度为S。灵芝高度为B(1 ≤ B ≤ S < 2,000,000,007).
为了摘到灵芝,小码君把梯子都接到一起(没有损失高度),直到梯子的总高度高于灵芝高度。为了帮助小码君摘到灵芝,找出使用梯子数目最少的解决方案吧。
输入格式
第1行:空格隔开的整数N和B 第2~N+1行:第i+1行为整数Hi
输出格式
能摘到灵芝所使用梯子的最少数目
样例
输入样例
14 10
3 7 8 5 7 7 7 2 8 9 4 6 6 6 输出样例
2
(就只有这个样例)
我的代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, b;
cin >> n >> b;
int a[n];
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + 1 + n);
int sum = 0;
for (int i = n; i <= 1; i--) {
if (b >0) {
sum++;
b = b - a[i];
}
}
cout<<sum;
return 0;
}