Submission #1368953

#TimeUsernameProblemLanguageResultExecution timeMemory
1368953viduxRectangles (IOI19_rect)C++17
13 / 100
459 ms686416 KiB
#include "rect.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

long long count_rectangles(std::vector<std::vector<int> > a) {
	int n = (int)a.size();
	int m = (int)a[0].size();
	if (n < 3 || m < 3) return 0;
	ll ans = 0;
	vector<vector<int>> seen(n, vector<int>(m));
	int c1, c2, r1, r2, cnt;
	auto dfs = [&](auto dfs, int i, int j) -> void {
		if (i < 0 || i == n || j < 0 || j == m) return;
		if (seen[i][j] || a[i][j]) return;
		seen[i][j] = 1;
		cnt++;
		r1 = min(r1, i);
		r2 = max(r2, i);
		c1 = min(c1, j);
		c2 = max(c2, j);
		dfs(dfs, i+1, j-0);
		dfs(dfs, i-1, j+0);
		dfs(dfs, i+0, j-1);
		dfs(dfs, i-0, j+1);
	};
	for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (!seen[i][j]) {
		r1 = r2 = i;
		c1 = c2 = j;
		cnt = 0;
		dfs(dfs, i, j);
		if (r1 != 0 && r2 != n-1 && c1 != 0 && c2 != m-1 && cnt == (c2-c1+1)*(r2-r1+1)) ans++;
	}
	return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...