// file:///C:/Andet/HTXProgrammering/Diverse/Statements/statement_en%20(17).pdf
// 3. (9 points) Y [i] = 0 (for each i such that 0 ≤ i ≤ M − 1)
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
vector<int> grid(N);
for(int i = 0; i < M; i++){
assert(Y[i] == 0);
grid[X[i]] = W[i];
}
vector<ll> dp(N);
for(int i = 0; i < N; i++){
ll right = i + 1 < N ? grid[i + 1] : 0;
ll left = i - 1 >= 0 ? grid[i - 1] : 0;
ll mid = grid[i];
ll minusThree = i - 3 >= 0 ? dp[i - 3] + left + right : 0;
ll minusTwo = i - 2 >= 0 ? dp[i - 2] + right : 0;
ll minusOne = i - 1 >= 0 ? dp[i - 1] - mid + right : 0;
ll prev = i - 1 >= 0 ? dp[i - 1] : 0;
dp[i] = max({
minusThree,
minusTwo,
minusOne,
left + right,
prev
});
}
ll best = 0;
for(int i = 0; i < dp.size(); i++){
best = max(best, dp[i]);
}
return best;
}
// #include "grader.cpp"
# | 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... |