#include <algorithm>
#include <array>
#include <map>
#include <numeric>
#include <vector>
#include "fish.h"
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) {
std::vector<long long> vals(N);
for (int i = 0; i < M; ++i) vals[X[i]] = W[i];
std::vector<std::array<long long, 3>> dp(N); // 0 closed, 1 open but taken, 2 open and free
for (int i = 1; i < N; ++i) {
dp[i][0] = std::max({dp[i - 1][0], dp[i - 1][1], dp[i - 1][2] + vals[i - 1]});
dp[i][1] = dp[i - 1][0] + vals[i];
dp[i][2] = std::max(dp[i - 1][1], dp[i - 1][2]);
}
return *std::max_element(dp.back().begin(), dp.back().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... |