# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1264023 | DeltaStruct | 삶의 질 (IOI10_quality) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++h>
using namespace std;
int rectangle(int h,int w,int x,int y,int A[3001][3001]){
vector B(h+1,vector<int>(w+1));
int l(0),r(h*w),mid;
while(r-l>1){
mid = (l+r)/2;
for (int i(0);i < h;++i) for (int k(0);k < w;++k) B[i+1][k+1] = B[i+1][k]+B[i][k+1]-B[i][k]+(A[i][k]>mid);
bool f = 0;
for (int i(x);i <= h;++i) for (int k(y);k <= w;++k) f |= (B[i][k]-B[i-x][k]-B[i][k-y]+B[i-x][k-y]>x*y/2+1);
if (f) r = mid;
else l = mid;
}
return r;
}