Advertisement
MathQ_

Untitled

Jun 9th, 2021
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. typedef std::pair<int, int> pii;
  6.  
  7. #define fi first
  8. #define se second
  9.  
  10. using namespace std;
  11.  
  12. int sub_mod(int p, int q, int mod) {
  13.     return (p <= q ? q - p : mod - p + q);
  14. }
  15.  
  16. int main() {
  17.     int n;
  18.     cin >> n;
  19.     vector<pii> nums(n);
  20.     for (auto &el : nums) cin >> el.fi >> el.se;
  21.    
  22.     int dp[n][5][3];
  23.     for (int i = 0; i < n; ++i) for (int j = 0; j < 5; ++j) for (int k = 0; k < 3; ++k) dp[i][j][k] = 0;
  24.  
  25.     dp[0][nums[0].fi % 5][nums[0].se % 3] = nums[0].fi;
  26.     dp[0][nums[0].se % 5][nums[0].fi % 3] = nums[0].se;
  27.  
  28.     for (int i = 1; i < n; ++i) {
  29.         int p1 = nums[i].fi % 5, p2 = nums[i].se % 5;
  30.         int q1 = nums[i].fi % 3, q2 = nums[i].se % 3;
  31.         for (int j = 0; j < 5; ++j) {
  32.             for (int k = 0; k < 3; ++k) {
  33.                 dp[i][j][k] = max(dp[i][j][k], dp[i - 1][sub_mod(p1, j, 5)][sub_mod(q2, k, 3)] + nums[i].fi);
  34.                 dp[i][j][k] = max(dp[i][j][k], dp[i - 1][sub_mod(p2, j, 5)][sub_mod(q1, k, 3)] + nums[i].se);
  35.             }
  36.         }
  37.     }
  38.    
  39.     int ans = 0;
  40.     for (int j = 1; j <= 4; ++j) {
  41.         for (int k = 1; k <= 2; ++k) {
  42.             ans = max(ans, dp[n - 1][j][k]);
  43.         }
  44.     }
  45.     cout << ans << '\n';
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement