Submission #219794

#TimeUsernameProblemLanguageResultExecution timeMemory
219794VEGAnnRectangles (IOI19_rect)C++14
13 / 100
450 ms318200 KiB
#include <bits/stdc++.h> #include "rect.h" #define all(x) x.begin(),x.end() #define PB push_back #define sz(x) ((int)x.size()) using namespace std; typedef long long ll; const int N = 2600; const int oo = 2e9; bool mrk[N][N]; int n, m, kol = 0, mx, my, Mx, My; ll ans = 0, big = 0; void dfs(int x, int y){ if (mrk[x][y]) return; kol++; mrk[x][y] = 1; mx = min(mx, x); my = min(my, y); Mx = max(Mx, x); My = max(My, y); if (x > 0) dfs(x - 1, y); if (y > 0) dfs(x, y - 1); if (y < m - 1) dfs(x, y + 1); if (x < n - 1) dfs(x + 1, y); } long long count_rectangles(std::vector<std::vector<int> > a) { n = sz(a); m = sz(a[0]); for (int x = 1; x <= n; x++) for (int y = 1; y <= m; y++) big += (n / x) * (m / y); if (n < 3 || m < 3) return 0; bool ok = 1; for (int i = 0; i < n && ok; i++) for (int j = 0; j < m && ok; j++) { ok &= bool(a[i][j] < 2); mrk[i][j] = a[i][j]; } if (ok){ for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (!mrk[i][j]){ mx = my = oo; Mx = My = -oo; kol = 0; dfs(i, j); if ((Mx - mx + 1) * (My - my + 1) == kol && mx > 0 && my > 0 && Mx < n - 1 && My < m - 1) ans++; } return ans; } for (int r1 = 1; r1 < n - 1; r1++) for (int r2 = r1; r2 < n - 1; r2++) for (int c1 = 1; c1 < m - 1; c1++) for (int c2 = c1; c2 < m - 1; c2++){ bool ok = 1; for (int i = r1; i <= r2 && ok; i++) for (int j = c1; j <= c2 && ok; j++){ ok &= bool(a[i][j] < a[i][c1 - 1]); ok &= bool(a[i][j] < a[i][c2 + 1]); ok &= bool(a[i][j] < a[r2 + 1][j]); ok &= bool(a[i][j] < a[r1 - 1][j]); } ans += ok; } assert(ans <= big / 100); 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...