天天看點

24-題目1436:Repair the Wall

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;
}