# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1220805 | hmms127 | 삶의 질 (IOI10_quality) | C++20 | 0 ms | 0 KiB |
#include "quality.h"
#include <bits/stdc++.h>
using namespace std;
#define f2(m,n) for(int i=m;i<n;i++)
#define f4(m,n) for(int j=m;i<n;j++)
const int N=3e3+5;
int pref[N][N];
int rectangle(int R,int C,int H,int W,int Q[3001][3001]){
int l=1,r=R*C,ans=0;
while(l<=r){
int mid=(l+r)/2;
bool ok=0;
f2(1,R+1,1){
f3(1,C+1,1){
pref[i][j]=pref[i-1][j]+pref[i][j-1]-pref[i-1][j-1]+(Q[i-1][j-1]>mid);
if(i>=H&&j<=W){
if((pref[i][j]+pref[i-H][j-W]-pref[i-H][j]+pref[i][j-W])<=((H*W)/2)){
ok=1;
goto done;
}
}
}
}
done:;
if(ok)ans=mid,r=mid-1;
else l=mid+1;
}
}