Submission #1056454

#TimeUsernameProblemLanguageResultExecution timeMemory
1056454aykhnCatfish Farm (IOI22_fish)C++17
0 / 100
94 ms16732 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 lft[MXN][MXN], rig[MXN][MXN], in[MXN][MXN]; /* 0 = len[i] < len[i + 1]; 1 = len[i] > len[i + 1]; */ 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 * val[X[i] + 1][Y[i] + 1] + 1LL * W[i]; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { 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 i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { dp[0][i][j] = dp[1][i][j] = lft[i][j] + rig[i][j]; if (i == 1) continue; 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[0][i][j] = max(dp[0][i][j], res); } 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); } } if (i == 2) continue; for (int k = 1; k <= N; k++) { long long res = max(dp[0][i - 2][k], 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], res); } } } long long ans = 0; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { ans = max({ans, dp[0][i][j], 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...