Advertisement
MathQ_

Untitled

Mar 1st, 2021
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. typedef long long ll;
  6.  
  7. using namespace std;
  8.  
  9. const ll inf = 1e11 + 1;
  10.  
  11. int main() {
  12.     int n;
  13.     cin >> n;
  14.     vector<pair<int, int>> nums(n);
  15.     for (auto &it : nums) {
  16.         cin >> it.first >> it.second;
  17.     }
  18.  
  19.     vector<vector<ll>> dp(n, vector<ll>(16, inf));
  20.     dp[0][nums[0].first % 16] = nums[0].first;
  21.     dp[0][nums[0].second % 16] = nums[0].second;
  22.  
  23.     for (int i = 1; i < n; ++i) {
  24.         int num1 = nums[i].first, num2 = nums[i].second;
  25.         int r1 = num1 % 16, r2 = num2 % 16;
  26.         for (int k = 0; k < 16; ++k) {
  27.             if (k >= r1) {
  28.                 dp[i][k] = min(dp[i][k], dp[i - 1][k - r1] + num1);
  29.             } else {
  30.                 dp[i][k] = min(dp[i][k], dp[i - 1][16 - r1 + k] + num1);
  31.             }
  32.             if (k >= r2) {
  33.                 dp[i][k] = min(dp[i][k], dp[i - 1][k - r2] + num2);
  34.             } else {
  35.                 dp[i][k] = min(dp[i][k], dp[i - 1][16 - r2 + k] + num2);
  36.             }
  37.         }
  38.     }
  39.  
  40.     cout << dp[n - 1][15] << '\n';
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement