Submission #1056405

#TimeUsernameProblemLanguageResultExecution timeMemory
1056405aykhnCatfish Farm (IOI22_fish)C++17
0 / 100
126 ms19960 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; const int MXN = 3e2 + 5; long long dp[2][MXN][MXN], val[MXN][MXN]; long long up[MXN][MXN], lft[MXN][MXN], rig[MXN][MXN], in[MXN][MXN]; long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) { for (int i = 0; i < M; i++) val[X[i] + 1][Y[i] + 1] += 1LL * W[i]; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { up[i][j] = val[i][j + 1]; lft[i][j] = lft[i][j - 1] + val[i - 1][j]; rig[i][j] = rig[i][j - 1] + val[i + 1][j]; in[i][j] = in[i][j - 1] + val[i][j]; } } for (int _ = 0; _ < 2; _++) for (int j = 1; j <= N; j++) dp[_][1][j] = lft[1][j] + rig[1][j]; for (int j = 1; j <= N; j++) { dp[0][2][j] = dp[1][2][j] = lft[2][j] + rig[2][j]; for (int k = 1; k <= N; k++) { if (k < j) { long long res = (dp[0][1][k] - rig[1][k]) + ((lft[2][j] - in[1][k]) + rig[2][j]); dp[1][2][j] = max(dp[1][2][j], res); } else if (k >= j) { long long res = dp[1][1][k] - in[2][j] + rig[2][j]; dp[1][2][j] = max(dp[1][2][j], res); } } dp[1][2][j] = max(dp[1][2][j], dp[0][2][j]); } for (int i = 3; i <= N; i++) { for (int j = 1; j <= N; j++) { dp[0][i][j] = dp[1][i][j] = lft[i][j] + rig[i][j]; for (int k = 1; k <= N; k++) { if (k < j) { long long res = (dp[0][i - 1][k] - rig[i - 1][k]) + ((lft[i][j] - in[i - 1][k]) + rig[i][j]); dp[1][i][j] = max(dp[1][i][j], res); } else if (k >= j) { long long res = dp[1][i - 1][k] - in[i][j] + rig[i][j]; dp[1][i][j] = max(dp[1][i][j], res); } } for (int k = 1; k <= N; k++) { long long res = dp[1][i - 2][k] + lft[i][j] + rig[i][j]; if (k <= j) res -= rig[i - 2][k]; else res -= lft[i][j]; dp[0][i][j] = max(dp[0][i][j], res); } dp[1][i][j] = max(dp[1][i][j], dp[0][i][j]); } } long long ans = 0; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { ans = max(ans, dp[1][i][j]); } } return ans; }
#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...