Submission #1191815

#TimeUsernameProblemLanguageResultExecution timeMemory
1191815petezaQuality Of Living (IOI10_quality)C++20
100 / 100
1128 ms70896 KiB
#include "quality.h"
#include <bits/stdc++.h>
using namespace std;

int qs[3001][3001];

int rectangle(int R, int C, int H, int W, int Q[3001][3001]) {
	int l = 1, r = R*C, mid;
	int medcnt = H*W/2+1;
	while(l <= r) {
		mid = (l+r) >> 1;
		for(int i=0;i<R;i++) {
			for(int j=0;j<C;j++) {
				qs[i+1][j+1] = (Q[i][j] <= mid);
				qs[i+1][j+1] += qs[i+1][j] + qs[i][j+1] - qs[i][j];
			}
		}
		int cnt = 0;
		for(int i=0;i+H<=R;i++) {
			for(int j=0;j+W<=C;j++) {
				cnt = max(cnt, qs[i+H][j+W] - qs[i+H][j] - qs[i][j+W] + qs[i][j]);
			}
		}
		if(cnt >= medcnt) r = mid-1;
		else l = mid+1;
	}
	return l;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...