#include "soccer.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 500 + 7;
int a[N][N], pref[N][N], dp[N][N][N][2]; // dp[line][l][r][peak]
int inside[N][N][2], outside[N][N][2];
bool ok(int l, int x, int y) {
return pref[l][y] - pref[l][x - 1] == 0;
}
int biggest_stadium(int n, vector<vector<int>> f) {
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
a[i][j] = f[i - 1][j - 1];
pref[i][j] = pref[i][j - 1] + a[i][j];
}
}
for (int i = 1; i <= n; ++i) {
for (int l = 1; l <= n; ++l) {
for (int r = l; r <= n; ++r) {
if (!ok(i, l, r)) continue;
dp[i][l][r][0] = r - l + 1;
dp[i][l][r][1] = r - l + 1;
dp[i][l][r][0] = max(dp[i][l][r][0], dp[i - 1][l][r][0] + r - l + 1);
dp[i][l][r][1] = max(dp[i][l][r][1], inside[l][r][0] + r - l + 1);
dp[i][l][r][1] = max(dp[i][l][r][1], outside[l][r][1] + r - l + 1);
}
}
for (int h = 1; h <= n; ++h) {
for (int l = 1; l + h - 1 <= n; ++l) {
int r = l + h - 1;
for (int peak = 0; peak < 2; ++peak) {
inside[l][r][peak] = dp[i][l][r][peak];
inside[l][r][peak] = max(inside[l][r][peak], inside[l + 1][r][peak]);
inside[l][r][peak] = max(inside[l][r][peak], inside[l][r - 1][peak]);
}
}
}
for (int h = n; h >= 1; --h) {
for (int l = 1; l + h - 1 <= n; ++l) {
int r = l + h - 1;
for (int peak = 0; peak < 2; ++peak) {
outside[l][r][peak] = dp[i][l][r][peak];
outside[l][r][peak] = max(outside[l][r][peak], outside[l - 1][r][peak]);
outside[l][r][peak] = max(outside[l][r][peak], outside[l][r + 1][peak]);
}
}
}
}
int ans = 0;
for (int i = 1; i <= n; ++i) {
for (int l = 1; l <= n; ++l) {
for (int r = l; r <= n; ++r) {
ans = max(ans, dp[i][l][r][0]);
ans = max(ans, dp[i][l][r][1]);
}
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |