#include <iostream>
int N, K, Arr[200005], Tag[200005], TagSum[200005], TagSumMin[200005];
bool Check(int X) {
for (int i = 1; i <= N; i++) {
Tag[i] = ((Arr[i] >= X) ? (1) : (-1));
}
TagSumMin[0] = 0x3F3F3F3F;
for (int i = 1; i <= N; i++) {
TagSum[i] = TagSum[i - 1] + Tag[i];
TagSumMin[i] = std::min(TagSumMin[i - 1], TagSum[i]);
}
for (int i = K; i <= N; i++) {
if (TagSum[i] - TagSumMin[i - K] > 0) return true;
}
return false;
}
int main() {
std::cin >> N >> K;
for (int i = 1; i <= N; i++) std::cin >> Arr[i];
int L = 0, R = 2147483647;
while (L + 1 != R) {
int Mid = (L + R) >> 1;
if (Check(Mid)) L = Mid;
else R = Mid;
}
std::cout << L << '\n';
return 0;
}
第10个测评点WA
另一个网站AC