题解 | 中位数
中位数
https://www.nowcoder.com/practice/ecf14c98138a42e1b2da25cf202a316d
def check(a,n,m,x):
pre=[0]*(1+n)
for i in range(1,n+1):
pre[i]=pre[i-1]+(1 if a[i-1]>=x else -1)
pre_l=pre[0]
for r in range(1,n+1):
if r >=m:
pre_l=min(pre_l,pre[r-m])
if pre[r]-pre_l>0:
return True
return False
T=int(input())
for i in range(T):
n,m=map(int,input().split())
a=list(map(int,input().split()))
l,r=0,10**9
while l<r:
mid=(l+r+1)//2
if check(a,n,m,mid):
l=mid
else:
r=mid-1
print(l)