Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <vector>
- typedef std::pair<int, int> pii;
- #define fi first
- #define se second
- using namespace std;
- int sub_mod(int p, int q, int mod) {
- return (p <= q ? q - p : mod - p + q);
- }
- int main() {
- int n;
- cin >> n;
- vector<pii> nums(n);
- for (auto &el : nums) cin >> el.fi >> el.se;
- int dp[n][5][3];
- 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;
- dp[0][nums[0].fi % 5][nums[0].se % 3] = nums[0].fi;
- dp[0][nums[0].se % 5][nums[0].fi % 3] = nums[0].se;
- for (int i = 1; i < n; ++i) {
- int p1 = nums[i].fi % 5, p2 = nums[i].se % 5;
- int q1 = nums[i].fi % 3, q2 = nums[i].se % 3;
- for (int j = 0; j < 5; ++j) {
- for (int k = 0; k < 3; ++k) {
- 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);
- 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);
- }
- }
- }
- int ans = 0;
- for (int j = 1; j <= 4; ++j) {
- for (int k = 1; k <= 2; ++k) {
- ans = max(ans, dp[n - 1][j][k]);
- }
- }
- cout << ans << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement