# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1157804 | InvMOD | Catfish Farm (IOI22_fish) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.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;
int max_weights(int n, int m, int X[], int Y[], int W[]){
vector<vector<int>> w(n + 1, vector<int>(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<int>> dp(n + 1, vector<int>(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]);
}
int 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));
}
}
}
int answer = 0;
for(int i = 0; i <= n; i++){
answer = max(answer, dp[n][i]);
}
return answer;
}