dp

 avatar
unknown
c_cpp
a year ago
584 B
3
Indexable
#include<cstdio>
#include<algorithm>
using namespace std;
int n,k,a[500009],o;
int sp[500009];
bool gt(int x){
for(int i = 0; i <= o; i ++)
sp[i] = 0;
for(int i = 1; i <= n; i ++){
int p = i % k == 0 ? k : i % k;
sp[p] = max(sp[p],sp[p - 1] + (a[i] >= x));
}
int p = n % k == 0 ? k : n % k;
return sp[p] * 2 > o;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d %d",&n,&k);
o = n;
while(o > k)
o -= k;
for(int i = 1; i <= n; i ++){
scanf("%d",&a[i]);
}
int l = 1,r = 1e9 + 7;
while(l + 1 < r){
int mid = (l + r) >> 1;
if(gt(mid))
l = mid;
else
r = mid;
}
printf("%d\n",l);
}
Editor is loading...
Leave a Comment