杭电acm2124
贪心
#include <stdio.h> #include <algorithm> using namespace std; bool cmp(const int &a, const int &b) { return a > b; } int main() { int l, n, i, ans, ids, sum; int d[600]; while(~scanf("%d%d", &l, &n)) { sum = 0; for(i=0; i<n; i++) { scanf("%d", &d[i]); sum += d[i]; } if(sum < l) { printf("impossible\n"); continue; } sort(d, d+n, cmp); ans = 0; ids = 0; while(l>0 && ids<n) { if(l>d[ids]) { l -= d[ids]; ans ++; } else { ans ++; l = 0; } ids ++; } printf("%d\n", ans); } return 0; }