#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector<pair<int, int>> delta = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
vector<vector<int>> g;
int n, m;
vector<vector<bool>> vis;
int u, d, l, r, sz;
bool inside(int i, int j) {
return i >= 0 && i < n && j >= 0 && j < m;
}
void dfs(int i, int j) {
if (!inside(i, j) || g[i][j] || vis[i][j]) return;
vis[i][j] = true;
sz++;
u = min(u, i);
d = max(d, i);
l = min(l, j);
r = max(r, j);
for (auto [di, dj]: delta) {
dfs(i + di, j + dj);
}
}
ll count_rectangles(vector<vector<int>> G) {
g = G;
n = g.size();
m = g[0].size();
vis.assign(n, vector<bool>(m, false));
ll ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
u = n;
d = 0;
l = m;
r = 0;
sz = 0;
if (!vis[i][j] && g[i][j] == 0) {
dfs(i, j);
}
else continue;
if (u == 0 || d == n-1 || l == 0 || r == m-1) continue;
if ((d - u + 1) * (r - l + 1) == sz) {
ans++;
}
}
}
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... |