fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. #define ii pair<int,int>
  5. #define iii pair<int, ii>
  6. #define fi first
  7. #define se second
  8. #define inf 10000000000000000
  9. const int N = 2005;
  10. int n, h[N], l[N], d, b[N], vis[N];
  11. int ans = 0;
  12. void bt(int pos, int n) {
  13. if(pos > n) {
  14. int sum = 0, cnt = 0;
  15. for(int j = 1; j <= n; j++) {
  16. int vt = b[j];
  17. sum += h[vt];
  18. }
  19. for(int i = n; i >= 1; i--) {
  20. int vt = b[i];
  21. if(sum + l[vt] >= d) {
  22. cnt++;
  23. sum -= h[vt];
  24. }
  25. }
  26. ans = max(ans,cnt);
  27. return;
  28. }
  29. for(int j = 1; j <= n; j++) {
  30. if(vis[j] == 0) {
  31. b[pos] = j;
  32. vis[j] = 1;
  33. bt(pos+1,n);
  34. vis[j] = 0;
  35. }
  36. }
  37. }
  38. signed main() {
  39. ios_base::sync_with_stdio(0);
  40. cin.tie(0);
  41. cout.tie(0);
  42.  
  43. freopen("code.inp", "r", stdin);
  44. freopen("code.ans", "w", stdout);
  45.  
  46. cin >> n;
  47. for(int i = 1; i <= n; i++) cin >> h[i] >> l[i];
  48. cin >> d;
  49. bt(1,n);
  50. cout << ans;
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
Standard output is empty