leoanjos

Bongcloud Opening

Jul 5th, 2023
1,063
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define llong long long int
  6.  
  7. const int NOANS = 1e9 + 5;
  8.  
  9. int n, k, x;
  10. vector<int> a, b, c, d;
  11. vector<vector<int>> memo;
  12.  
  13. int rating(int i = 0, int diff = 0) {
  14.     if (i >= n) return x + diff;
  15.     if (diff < -k) return rating(i + 1, diff + (c[i] ? a[i] : -b[i]));
  16.     if (diff > k) return rating(i + 1, diff + (d[i] ? a[i] : -b[i]));
  17.  
  18.     int &ans = memo[i][diff + k];
  19.     if (ans != NOANS) return ans;
  20.  
  21.     ans = rating(i + 1, diff + (c[i] ? a[i] : -b[i]));
  22.     ans = max(ans, rating(i + 1, diff + (d[i] ? a[i] : -b[i])));
  23.  
  24.     return ans;
  25. }
  26.  
  27. int main() {
  28.     ios_base::sync_with_stdio(false);
  29.     cin.tie(NULL);
  30.  
  31.     cin >> n >> k >> x;
  32.  
  33.     a.resize(n);
  34.     b.resize(n);
  35.     c.resize(n);
  36.     d.resize(n);
  37.  
  38.     for (int i = 0; i < n; i++)
  39.         cin >> a[i] >> b[i] >> c[i] >> d[i];
  40.  
  41.     memo.assign(n + 5, vector<int>(2 * k + 5, NOANS));
  42.  
  43.     int ans = rating();
  44.     cout << ans << "\n";
  45. }
Advertisement
Add Comment
Please, Sign In to add comment