제출 #1237176

#제출 시각아이디문제언어결과실행 시간메모리
1237176Ghulam_JunaidRectangles (IOI19_rect)C++20
0 / 100
0 ms580 KiB
#include <bits/stdc++.h> #include "rect.h" using namespace std; typedef long long ll; const int N = 2505; int n, m, U[N][N], L[N][N], S[N][N]; ll count_rectangles(vector<vector<int>> a){ n = a.size(), m = a[0].size(); ll ans = 0; if (n < 3 or m < 3) return 0; for (int i = 0; i < n; i ++){ for (int j = 0; j < m; j ++){ L[i][j] = ((j == 0 or a[i][j - 1] != a[i][j]) ? j : L[i][j - 1]); U[i][j] = ((i == 0 or a[i - 1][j] != a[i][j]) ? i : U[i - 1][j]); if (i and j) S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + a[i][j]; } } for (int i = 1; i + 1 < n; i ++){ for (int j = 1; j + 1 < m; j ++){ if (a[i][j]) continue; int pj = L[i][j]; int pi = U[i][j]; if (pi == 0 or pj == 0) continue; if (S[i][j] - S[i][pj - 1] - S[pi - 1][j] + S[pi - 1][pj - 1] > 0) continue; if (U[i][pj - 1] <= pi and U[i][j + 1] <= pi and L[i + 1][j] <= pj and L[pi - 1][j] <= pj) 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...