This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "rect.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2505;
int n,m;
int A[N][N];
bool yes[N];
int mx[N];
int f(int x,int y){
for(int j = y;j<m;j++){
yes[j] = true;
mx[j] = A[x][j];
}
int res = 0;
for(int i = x;i<n;i++){
int rmx = 0;
for(int j = y;j<m;j++){
rmx = max(rmx, A[i][j]);
yes[j] &= (rmx < A[i][y-1] && rmx < A[i][j+1]);
}
for(int j = y;j<m;j++)mx[j] = max(mx[j], A[i][j]);
for(int j = y;j<m;j++){
if(mx[j] >= A[i+1][j])break;
if(mx[j] >= A[x-1][j])break;
if(yes[j])res++;
}
}
return res;
}
ll count_rectangles(vector<vector<int> > a) {
n = a.size();
m = a[0].size();
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
A[i][j] = a[i-1][j-1];
}
}
int res = 0;
for(int i = 2;i<n;i++){
for(int j = 2;j<m;j++){
res += f(i, j);
}
}
return res;
}
| # | 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... |