#include "quality.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <math.h>
#include <algorithm>
#include <cstring>
#include <numeric>
#include <vector>
#include <bitset>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <cassert>
using namespace std;
int rectangle(int R, int C, int H, int W, int Q[3001][3001]) {
vector<int>num;
for(int i=0 ; i<R ; i++){
for(int j=0 ; j<C ; j++){
num.push_back(Q[i][j]);
}
}
sort(num.begin(), num.end());
int l=0, r=(int)num.size()-1;
int ans=1e9;
while(l<=r){
int mid=(l+r)/2;
int mid1=mid;
mid=num[mid];
vector<vector<int>>pref(R+1, vector<int>(C+1));
for(int i=0 ; i<R ; i++){
for(int j=0 ; j<C ; j++){
if(Q[i][j]==mid) pref[i+1][j+1]=0;
else if(Q[i][j]<mid) pref[i+1][j+1]=1;
else pref[i+1][j+1]=-1;
}
}
for(int i=1 ; i<=R ; i++){
for(int j=1 ; j<=C ; j++){
pref[i][j]+=pref[i-1][j]+pref[i][j-1]-pref[i-1][j-1];
}
}
bool ok=0;
for(int i=H ; i<=R ; i++){
for(int j=W ; j<=C ; j++){
if(pref[i][j]-pref[i-H][j]-pref[i][j-W]+pref[i-H][j-W]>=0){
ok=1;
break;
}
}
}
if(ok){
r=mid1-1;
ans=mid;
}else l=mid1+1;
}
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... |