Submission #1129077

#TimeUsernameProblemLanguageResultExecution timeMemory
1129077vladiliusCatfish Farm (IOI22_fish)C++20
14 / 100
1145 ms1156848 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; #define pb push_back #define ff first #define ss second ll max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W){ int n = N, m = M; for (int i = 0; i < m; i++){ X[i]++; Y[i]++; } vector<int> d[n + 1]; for (int i = 0; i < m; i++){ d[X[i]].pb(i); } auto f = [&](int i, int l, int r){ ll out = 0; for (int j: d[i]){ if (l <= Y[j] && Y[j] <= r){ out += W[j]; } } return out; }; vector<vector<vector<ll>>> dp(n + 1, vector<vector<ll>>(n + 1, vector<ll>(2))); for (int i = 2; i <= n; i++){ for (int j = 0; j <= n; j++){ // dp[i][j][0] for (int k = 0; k <= j; k++){ dp[i][j][0] = max(dp[i][j][0], dp[i - 1][k][0] + f(i - 1, k + 1, j)); } if (i > 2){ for (int t = 0; t <= j; t++){ dp[i][j][0] = max(dp[i][j][0], max(dp[i - 2][t][0], dp[i - 2][t][1]) + f(i - 1, 1, j)); } for (int t = j + 1; t <= n; t++){ dp[i][j][0] = max(dp[i][j][0], max(dp[i - 2][t][0], dp[i - 2][t][1]) + f(i - 1, 1, t)); } } // dp[i][j][1] for (int k = j + 1; k <= n; k++){ dp[i][j][1] = max(dp[i][j][1], max(dp[i - 1][k][0], dp[i - 1][k][1]) + f(i, j + 1, k)); } } } ll out = 0; for (int i = 1; i <= n; i++){ for (int j = 0; j <= n; j++){ out = max({out, dp[i][j][0], dp[i][j][1]}); } } return out; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...