This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// sub1+2 sub5+6
#include "bits/stdc++.h"
using namespace std;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pii> vpii;
typedef vector<vi> vvi;
typedef long long ll;
#define sz(x) (int) (x).size()
#define all(x) (x).begin(), (x).end()
int n, m;
int conv(int i, int j) { return i * m + j; }
pii conv(int i) { return {i / m, i % m}; }
bool inRange(int i, int j) { return 0 <= i && i < n && 0 <= j && j < m; }
vpii dirs = {{0, 1},
{0, -1},
{1, 0},
{-1, 0}};
vvi A;
bool done[2505 * 2505] = {false};
ll ans;
bool check(int x, int y, int w, int h) {
for (int row = y; row <= y + h; ++row) {
int maxi = 0;
for (int col = x; col <= x + w; ++col) maxi = max(maxi, A[row][col]);
if (maxi >= min(A[row][x-1], A[row][x+w+1])) return false;
}
for (int col = x; col <= x + w; ++col) {
int maxi = 0;
for (int row = y; row <= y + h; ++row) maxi = max(maxi, A[row][col]);
if (maxi >= min(A[y-1][col], A[y+h+1][col])) return false;
}
return true;
}
ll count_rectangles(vvi a) {
n = sz(a), m = (sz(a[0]));
A.assign(n, vi(m));
for (int i = 0; i < n; ++i) for (int j = 0; j < m; ++j) A[i][j] = a[i][j];
for (int y = 1; y < n - 1; ++y) {
for (int x = 1; x < m - 1; ++x) {
if (!(a[y - 1][x] > a[y][x] && a[y][x - 1] > a[y][x])) continue;
for (int h = 0; y + h < n - 1; ++h) {
if (!(a[y + h][x - 1] > a[y + h][x])) break;
for (int w = 0; x + w < m - 1; ++w) {
if (!(a[y - 1][x + w] > a[y][x + w])) break;
if (check(x, y, w, h)) {
++ans;
// printf("y%d x%d w%d h%d\n", y, x, w, h);
}
}
}
}
}
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... |