Advertisement
ivnikkk

Untitled

Mar 16th, 2022
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define debug(l) cerr<<" smotri huinyi : "<<#l<<' '<<l<<'\n';
  3. #include "bits/stdc++.h"
  4. using namespace std;
  5. #define all(a) a.begin(), a.end()
  6. typedef long long ll;
  7. typedef long double ld;
  8. const int N = 3e5 + 1;
  9. ll dp[N][4];
  10. signed main() {
  11. #ifdef _DEBUG
  12.     freopen("input.txt", "r", stdin);
  13.     freopen("output.txt", "w", stdout);
  14. #endif
  15.     ios_base::sync_with_stdio(false);
  16.     cin.tie(nullptr);
  17.     srand(time(NULL));
  18.     ll w1, h1, n;
  19.     cin >> w1 >> h1 >> n;
  20.     vector<ll> w(n), h(n);
  21.     vector<vector<ll>> dp(w1 + 1, vector<ll>(h1 + 1, 0));
  22.     for (ll i = 0; i < n; i++) {
  23.         cin >> w[i] >> h[i];
  24.     }
  25.     const ll inf = 1e18;
  26.     vector<vector<ll>> pref_mx(w1 + 1, vector<ll>(h1 + 1, -inf));
  27.     for (ll l = 1; l <= w1; l++) {
  28.         for (ll r = 1; r <= h1; r++) {
  29.             for (ll i = 0; i < n; i++) {
  30.                 if (h[i] <= r && l % w[i] == 0) {
  31.                     dp[l][r] = max(dp[l][r], dp[l][r - h[i]] + l/w[i]);
  32.                 }
  33.                 if (w[i] <= l && r % h[i] == 0) {
  34.                     dp[l][r] = max(dp[l][r], dp[l - w[i]][r] + r/h[i]);
  35.                 }
  36.             }
  37.             ll k1 = -inf, k2 = -inf;
  38.             if (l > 0) {
  39.                 k1 = pref_mx[l - 1][r];
  40.             }
  41.             if(r>0) {
  42.                 k2 = pref_mx[l][r - 1];
  43.             }
  44.             pref_mx[l][r] = max(max(k1, k2), dp[l][r]);
  45.             dp[l][r] = max(dp[l][r], pref_mx[l][r]);
  46.             //cout << l << ' ' << r << ' ' << dp[l][r] << '\n';
  47.         }
  48.     }
  49.     cout << dp[w1][h1] <<'\n';
  50.  
  51. }
  52.  
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement