fork download
  1. /*
  2. IN THE NAME OF GOD
  3. */
  4.  
  5. #include <bits/stdc++.h>
  6. using namespace std;
  7. #define mpr make_pair
  8. #define pb push_back
  9. #define fi first
  10. #define se second
  11. #define MOD 1000000007
  12. #define sz(a) (int)a.size()
  13. #define mems(a,v) memset(a,v,sizeof a)
  14. #define all(v) (v).begin(), (v).end()
  15. #define rall(v) (v).rbegin(), (v).rend()
  16. typedef long long ll;
  17. typedef unsigned long long ull;
  18. typedef vector<int> vi;
  19. typedef vector<string> vs;
  20. typedef pair<int,int> pii;
  21.  
  22. int main()
  23. {
  24. int n , m;
  25.  
  26. while(cin >> n >> m) {
  27. bitset<20> mask;
  28. vector<int> vec(m);
  29. for(int i = 0; i < m; i++) cin >> vec[i];
  30. int t = pow(2 , m) , mx = 0, msk;
  31. for(int i = 0; i < t; i++) {
  32. int s = 0; mask = i+1;
  33. for(int y = 0; y < m; y++) {
  34. if(mask[y]){
  35. s += vec[y];
  36. }
  37. }
  38. if(s <= n && s > mx) {
  39. mx = s;
  40. msk = i + 1;
  41. }
  42. }
  43. mask = msk;
  44. for(int i = 0; i < m; i++) {
  45. if(mask[i]) {
  46. cout << vec[i] << ' ';
  47. }
  48. }
  49. cout << "sum:" << mx << endl;
  50. }
  51.  
  52. return 0;
  53. }
  54.  
Success #stdin #stdout 0s 3472KB
stdin
5 3 1 3 4
10 4 9 8 4 2
20 4 10 5 7 4
90 8 10 23 1 2 3 4 5 7
45 8 4 10 44 43 12 9 8 2
stdout
1 4 sum:5
8 2 sum:10
10 5 4 sum:19
10 23 1 2 3 4 5 7 sum:55
43 2 sum:45