Description
Sean is trying to save a large file to a USB flash drive. He has n USB flash drives with capacities equal to a1, a2, ..., an megabytes. The file size is equal to m megabytes.
Find the minimum number of USB flash drives needed to write Sean's file, if he can split the file between drives.
Input
The first line contains positive integer n (1 ≤ n ≤ 100) — the number of USB flash drives.
The second line contains positive integer m (1 ≤ m ≤ 105) — the size of Sean's file.
Each of the next n lines contains positive integer ai (1 ≤ ai ≤ 1000) — the sizes of USB flash drives in megabytes.
It is guaranteed that the answer exists, i. e. the sum of all ai is not less than m.
Output
Print the minimum number of USB flash drives to write Sean's file, if he can split the file between drives.
Sample Input
3 5 2 1 3
2
3 6 2 3 2
3
2 5 5 10
1
Hint
In the first example Sean needs only two USB flash drives — the first and the third.
In the second example Sean needs all three USB flash drives.
In the third example Sean needs only one USB flash drive and he can use any available USB flash drive — the first or the second.
#include <iostream>
#include<algorithm>
using namespace std;
int a[101];
int main()
{
int n;
cin>>n;
int m;
cin>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a,a+n+1);
int sum=0;
int sign=0;
for(int i=n;i>=1;i--)
{
sum+=a[i];
sign++;
if(sum>=m)
{
break;
}
}
cout<<sign<<endl;
return 0;
}
本文介绍了一种优化文件存储的方法,通过使用不同容量的USB闪存盘来存储大型文件,并找到所需的最少闪存盘数量。文章提供了算法实现思路及示例输入输出。
457

被折叠的 条评论
为什么被折叠?



