1. Title Description: Click to open the link
2. Solving ideas: The problem is solved by greedy method. First, the order of the array, from large to small selection, exactly greater than or equal to K stop. If all additions are still less than K, then no solution.
3. Code:
#define _crt_secure_no_warnings#include<iostream> #include <algorithm> #include <string> #include <sstream> #include <set> #include <vector> #include <stack> #include <map> #include < queue> #include <deque> #include <cstdlib> #include <cstdio> #include <cstring> #include < cmath> #include <ctime> #include <functional>using namespace std; #define ME (s) memset (s,0,sizeof (s)) typedef long Long ll;typedef unsigned int uint;typedef unsigned long long ull;typedef pair <int, int> p;const int n= 20;int a[n];int K;int Main () {while (~scanf ("%d", &k) } { for (int i=1;i<=12;i++) scanf ("%d", &a[i]); Sort (a+1,a+12+1); int st=12,sum=0; int ans=-1; while (sum<k&&st>=1) { sum+=a[st--]; } if (sum>=k&&st>=0) ans=12-st; printf ("%d\n", ans);} }
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
#106 (Div.2) A. Business trip