记录编号 575576 评测结果 AAAAAAAAAA
题目名称 IOI2099 最终得分 100
用户昵称 Gravataryrtiop 是否通过 通过
代码语言 C++ 运行时间 0.041 s
提交时间 2022-09-21 20:53:43 内存使用 2.06 MiB
显示代码纯文本
#include <bits/stdc++.h>

const int maxn = 1e5 + 5;
int n,k,a[maxn],sum[maxn],suf[maxn];

bool check(int x) {
	sum[0] = 0;
	for(int i = 1;i <= n;++ i)sum[i] = sum[i - 1] + (a[i] >= x ? 1 : -1);
	suf[n + 1] = -n;
	for(int i = n;i;-- i)suf[i] = std::max(suf[i + 1] , sum[i]);
	
	for(int i = 0;i <= n - k;++ i) {
		if(suf[i + k] - sum[i] > 0)return true;
	}
	return false;
}

int main() {
	freopen("player.in","r",stdin);
	freopen("player.out","w",stdout);
	scanf("%d %d",&n,&k);
	for(int i = 1;i <= n;++ i)scanf("%d",&a[i]);
	
	int l = 0,r = 5e5;
	while(l <= r) {
		int mid = (l + r) >> 1;
		if(check(mid))l = mid + 1;
		else r = mid - 1;
	}
	
	printf("%d",r);
	return 0;
}