#include<bits/stdc++.h>
#include "fish.h"
using namespace std;
#define fi first
#define se second
//#define int long long
#define sz(v) (int)(v).size()
#define all(v) (v).begin(), (v).end()
using ll = long long;
ll max_weights(int n, int m, vector<int> X, vector<int> Y, vector<int> W){
vector<vector<ll>> w(n + 1, vector<ll>(n + 1));
for(int i = 0; i < m; i++){
X[i] = X[i] + 1;
Y[i] = Y[i] + 1;
w[X[i]][Y[i]] = W[i];
}
vector<vector<ll>> dp(n + 1, vector<ll>(n + 1, 0));
for(int i = 1; i <= n; i++){
for(int j = 0; j <= n; j++){
dp[i][0] = max(dp[i][0], dp[i - 1][j]);
}
ll sum = 0;
for(int j = 1; j <= n; j++){
sum += w[i - 1][j];
int sub = 0;
for(int p = 0; p < j; p++){
sub += w[i - 1][p];
dp[i][j] = max(dp[i][j], dp[i - 1][p] + (sum - sub));
}
}
}
vector<vector<ll>> dp2(n + 1, vector<ll>(n + 1, 0));
for(int i = n - 1; i >= 1; i--){
for(int j = 0; j <= n; j++){
dp2[i][0] = max(dp2[i][0], dp2[i + 1][j]);
}
ll sum = 0;
for(int j = 1; j <= n; j++){
sum += w[i + 1][j];
int sub = 0;
for(int p = 0; p < j; p++){
sub += w[i + 1][p];
dp2[i][j] = max(dp2[i][j], dp2[i + 1][p] + (sum - sub));
}
}
}
ll answer = 0;
for(int i = 1; i <= n; i++){
for(int j = 0; j <= n; j++){
answer = max(answer, dp[i][j] + dp2[i][j]);
}
}
return answer;
}
# | 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... |