제출 #1203214

#제출 시각아이디문제언어결과실행 시간메모리
1203214SpyrosAlivRectangles (IOI19_rect)C++20
13 / 100
400 ms337548 KiB
#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 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...