#include "soccer.h"
#include "bits/stdc++.h"
using namespace std;
int biggest_stadium(int n, std::vector<std::vector<int>> f) {
vector<bitset<49>> out(n * n);
for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) f[i][j] = !f[i][j];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int id = i * n + j;
out[id] = bitset<49>();
if (f[i][j] == 0) continue;
for (int k = 0; k < n * n; k++) out[id][k] = true;
for (int k = 0; k < n; k++) out[id][k * n + j] = false;
for (int k = 0; k < n; k++) out[id][i * n + k] = false;
for (int k = i; k >= 0 and f[k][j]; k--) out[id][k * n + j] = true;
for (int k = i; k < n and f[k][j]; k++) out[id][k * n + j] = true;
for (int k = j; k >= 0 and f[i][k]; k--) out[id][i * n + k] = true;
for (int k = j; k < n and f[i][k]; k++) out[id][i * n + k] = true;
}
}
const int N = n * n;
int ans = 0;
for (int bt = 0; bt < (1 << N); bt++) {
bitset<49> act;
for (int i = 0; i < N; i++) act[i] = true;
for (int i = 0; i < N; i++) {
if (bt >> i & 1) act &= out[i];
}
if ((act.to_ullong() & bt) == bt) ans = max(ans, __builtin_popcount(bt));
}
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... |