tuki2501

dttui1.cpp

Nov 11th, 2021
958
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5.  
  6. #define ii pair<int,int>
  7. #define w first
  8. #define v second
  9.  
  10. void brute(vector<ii> &a, vector<ii> &s, int n, int i, int w, int v) {
  11.     for (int j = 0; j <= 1; j++) {
  12.         if (j) {
  13.             w += a[i].w;
  14.             v += a[i].v;
  15.         }
  16.         if (i < n - 1) brute(a, s, n, i + 1, w, v);
  17.         else s.push_back(ii(w, v));
  18.         if (j) {
  19.             w -= a[i].w;
  20.             v -= a[i].v;
  21.         }
  22.     }
  23. }
  24.  
  25. signed main() {
  26.     int n, m; cin >> n >> m;
  27.     int na = (n + 1) / 2, nb = n / 2;
  28.     vector<ii> a(na), b(nb);
  29.     for (int i = 0; i < na; i++) {
  30.         cin >> a[i].w >> a[i].v;
  31.     }
  32.     for (int i = 0; i < nb; i++) {
  33.         cin >> b[i].w >> b[i].v;
  34.     }
  35.     vector<ii> sa, sb;
  36.     brute(a, sa, na, 0, 0, 0);
  37.     brute(b, sb, nb, 0, 0, 0);
  38.     sort(sa.begin(), sa.end());
  39.     sort(sb.begin(), sb.end());
  40.     vector<int> mb(sb.size());
  41.     for (int i = 0; i < (int) sb.size(); i++) {
  42.         if (i == 0) mb[i] = sb[i].v;
  43.         else mb[i] = max(mb[i - 1], sb[i].v);
  44.     }
  45.     int ans = 0;
  46.     for (int i = 0; i < (int) sa.size(); i++) {
  47.         if (sa[i].w > m) continue;
  48.         int l = 0, r = sb.size() - 1, t = -1;
  49.         while (l <= r) {
  50.             int md = (l + r) / 2;
  51.             if (sb[md].w <= m - sa[i].w) {
  52.                 l = md + 1;
  53.                 t = md;
  54.             } else r = md - 1;
  55.         }
  56.         if (t == -1) continue;
  57.         else ans = max(ans, sa[i].v + mb[t]);
  58.     }
  59.     cout << ans << '\n';
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment