Submission #729901

#TimeUsernameProblemLanguageResultExecution timeMemory
729901caganyanmazCatfish Farm (IOI22_fish)C++17
35 / 100
147 ms39808 KiB
#include <bits/stdc++.h> #define pb push_back #define int int64_t using namespace std; constexpr static int SIZE = 1000; int dp[SIZE][SIZE][2]; int grid[SIZE][SIZE]; int max_weights(int32_t n, int32_t m, vector<int32_t> x, vector<int32_t> y, vector<int32_t> w) { for (int i = 0; i <= n; i++) for (int j = 0; j <= n; j++) for (int k = 0; k < 2; k++) dp[i][j][k] = 0; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) grid[i][j] = 0; for (int i = 0; i < m; i++) grid[x[i]][y[i]] = w[i]; for (int i = 1; i <= n; i++) dp[1][i][0] = dp[1][i-1][0] + grid[0][i-1]; for (int i = n-1; i >= 0; i--) dp[1][i][1] = dp[1][i+1][1] + grid[1][i]; for (int i = 2; i < n; i++) { vector<int> b_l(n+1), b_h(n+1); vector<int> prefix(n+1); for (int j = 1; j <= n; j++) prefix[j] = prefix[j-1] + grid[i-1][j-1]; for (int j = 1; j <= n; j++) b_l[j] = max({b_l[j-1], dp[i-2][j-1][0], dp[i-2][j-1][1]}); b_h[n] = max(dp[i-2][n][0], dp[i-2][n][1]) + prefix[n]; for (int j = n-1; j >= 0; j--) b_h[j] = max(b_h[j+1], max(dp[i-2][j][0], dp[i-2][j][1]) + prefix[j]); for (int j = 1; j <= n; j++) dp[i][j][0] = grid[i-1][j-1] + max({dp[i][j-1][0], dp[i-1][j-1][0]}); dp[i][n][1] = dp[i-1][n][1]; for (int j = n-1; j >= 0; j--) dp[i][j][1] = max({dp[i][j+1][1], dp[i-1][j+1][1], dp[i-1][j+1][0]}) + grid[i][j]; for (int j = 0; j <= n; j++) { dp[i][j][0] = max({dp[i][j][0], b_l[j] + prefix[j], b_h[j]}); dp[i][j][1] = max({dp[i][j][1], b_l[j] + prefix[j], b_h[j]}); } } vector<int> prefix(n+1); for (int i = 1; i <= n; i++) prefix[i] = prefix[i-1] + grid[n-1][i-1]; int best = 0; for (int i = 0; i <= n; i++) best = max(best, dp[n-1][i][0]); for (int i = 0; i <= n; i++) best = max(best, max(dp[n-2][i][1], dp[n-2][i][0]) + prefix[i]); return best; }
#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...