#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int biggest_stadium(int n, vector<vector<int>> f) {
vector<array<int, 2>> seg;
for (int i = 0; i < n; i++) {
int mn = n, mx = -1;
for (int j = 0; j < n; j++) {
if (f[i][j]) continue;
mn = min(mn, j);
mx = max(mx, j);
}
for (int j = mn; j <= mx; j++)
if (f[i][j]) return 0;
seg.push_back({mn, -mx});
}
for (int j = 0; j < n; j++) {
int mn = n, mx = -1;
for (int i = 0; i < n; i++) {
if (f[i][j]) continue;
mn = min(mn, i);
mx = max(mx, i);
}
for (int i = mn; i <= mx; i++)
if (f[i][j]) return 0;
}
sort(begin(seg), end(seg));
for (int i = 1; i < (int) seg.size(); i++)
if (-seg[i][1] > -seg[i - 1][1]) return 0;
int empty = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (!f[i][j]) empty++;
return empty;
}
/*
int main()
{
int N;
assert(1 == scanf("%d", &N));
std::vector<std::vector<int>> F(N, std::vector<int>(N));
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
assert(1 == scanf("%d", &F[i][j]));
}
}
fclose(stdin);
int res = biggest_stadium(N, F);
printf("%d\n", res);
fclose(stdout);
return 0;
}
//*/
# | 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... |