fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define vi vector<int>
  5. #define fi first
  6. #define se second
  7. #define pb push_back
  8. #define ii pair<int , int>
  9. #define pq priority_queue
  10. #define iii pair<int , pair<int , int>>
  11. #define fo(i,l,r) for(int i=l;i<=r;i++)
  12. #define fod(i,r,l) for(int i=r;i>=l;i--)
  13. #define fill(f,x) memset(f,x,sizeof(f))
  14. #define NAME "file"
  15.  
  16. const int N = 2e5 + 5, mod = 1e9 + 7;
  17. int n , w , a[21] , p[21] , len = 0 , ts = 0 , ans = 0 , cur = 0;
  18.  
  19. void sol(int i)
  20. {
  21. if (i > n)
  22. {
  23. ans = max(ans , len);
  24. }
  25. else
  26. {
  27. p[i] = 0;
  28. sol(i + 1);
  29.  
  30. int tem = cur; //giữ lại để tí nữa gán lại
  31. if (a[i] > cur && ts + a[i] <= w) // nhánh cận: 2 điều kiện là dãy con phải là dãy tăng và tổng trọng số <= w
  32. {
  33. p[i] = i;
  34. len++; // độ dài dãy đang xét
  35. cur = a[i];
  36. ts += a[i];
  37. sol(i + 1); // chạy xong phải đưa lại như cũ
  38. len--;
  39. cur = tem;
  40. ts -= a[i];
  41. }
  42. }
  43. }
  44.  
  45. signed main()
  46. {
  47. ios_base::sync_with_stdio(0);
  48. cin.tie(0); cout.tie(0);
  49. //freopen(NAME".INP" , "r" , stdin);
  50. //freopen(NAME".OUT" , "w" , stdout);
  51.  
  52. cin >> n >> w;
  53. for (int i = 1 ; i <= n ; i++)
  54. cin >> a[i];
  55. sol(1);
  56. cout << ans;
  57. }
  58. // haronnee_
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty