#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) {
vector<ll> vals(N, 0);
for (int i = 0; i < M; ++i) vals[X[i]] += W[i];
vector<vector<ll>> dp(N + 1, vector<ll>(4, 0));
dp[0][1] = dp[0][2] = dp[0][3] = LLONG_MIN / 2;
for (int i = 0; i < N; ++i) {
vector<ll> &prevDp = dp[i], &curDp = dp[i + 1];
for (int a = 0; a < 4; ++a) {
for (int b = 0; b < 4; ++b) {
if ((a % 2) + (b < 2) != 1) continue;
if (b % 2 == 0) {
if (a % 2) curDp[b] = max(curDp[b], prevDp[a] + vals[i]);
else curDp[b] = max(curDp[b], prevDp[a]);
} else {
if (a) curDp[b] = max(curDp[b], prevDp[a]);
else curDp[b] = max(curDp[b], prevDp[a] + (i ? vals[i - 1] : 0));
}
}
}
}
return *max_element(dp[N].begin(), dp[N].end());
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |