Guest User

Untitled

a guest
Jan 15th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define fr(i, n, m) for(int i = (n); i < (m); i ++)
  3. #define pb push_back
  4. #define st first
  5. #define nd second
  6. #define pq priority_queue
  7. #define all(x) begin(x),end(x)
  8.  
  9. using namespace std;
  10. typedef long long ll;
  11. typedef long double ld;
  12. typedef pair<int,int> pii;
  13. ll const inf = 1e9;
  14. ll const mod = 1e9 + 7;
  15. ld const eps = 1e-9;
  16.  
  17.  
  18. ll m, n;
  19. ll a[100000];
  20. int ANS = 0;
  21. vector<int> p1;
  22. vector<int> p2;
  23. vector<int> t1;
  24. vector<int> t2;
  25. void gen2(ll sum, int i, int j){
  26. if(sum > ANS){
  27. ANS = sum;
  28. p1 = t1;
  29. p2 = t2;
  30. }
  31. if(j < i) return;
  32. if(sum + a[j] <= m){
  33. t2.pb(j);
  34. gen2(sum + a[j], i, j - 1);
  35. t2.pop_back();
  36. }
  37. else{
  38. gen2(sum, i,j-1);
  39. }
  40. }
  41. void gen(ll sum, int i){
  42. if(i >= n) return;
  43. gen2(sum, i, n - 1);
  44. if(sum + a[i] <= 1e8){
  45. t1.pb(i);
  46. gen(sum + a[i], i + 1);
  47. t1.pop_back();
  48. gen(sum, i + 1);
  49. }
  50. }
  51. int main(){
  52. cin >> m >> n;
  53. fr(i, 0, n) cin >> a[i];
  54. gen(0, 0);
  55. cout << ANS << endl;
  56. for(auto u : p1) cout << u <<' ';
  57. for(auto u : p2) cout << u <<' ';
  58. cout << endl;
  59.  
  60.  
  61.  
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment