http://ac.jobdu.com/problem.php?pid=1436
#include<stdio.h>
#include<iostream>
#include<fstream>
#include<string>
#include<algorithm>
#include <iomanip> //小數點對齊
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int l, n; //l為長度,n為盒子的個數
ifstream cin("data.txt");
while (cin >> l >> n)
{
int *arr = new int[n]; //arr[i]為每個盒子的長度
int i, sum = 0;
for (i = 0; i < n; i++)
cin >> arr[i];
sort(arr, arr + n, cmp); //按盒子長度遞減排序
for (i = 0; i < n; i++)
{
if ((sum + arr[i]) < l)
sum += arr[i];
else
break;
}
if (i == n)
cout << "impossible" << endl;
else
cout << i+1 << endl;
}
system("pause");
return 0;
}