代码:
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e5+5;
long long a[MAXN],b[MAXN];
bool Judge(int x,int N,int K){
for(int i=0 ; i<x ; ++i)b[i] = a[i];
int j = x;
for(int i=x ; i<x*K ; ++i){
while(a[j]<b[i-x]*2 && j<N)++j;
if(j >= N)return false;
b[i] = a[j++];
}
return true;
}
int main(){
int T,N,K;
scanf("%d",&T);
for(int _=1 ; _<=T ; ++_){
scanf("%d %d",&N,&K);
for(int i=0 ; i<N ; ++i)scanf("%lld",&a[i]);
sort(a,a+N);
int l=0,r=N/K;
while(l < r){
int m = (l+r+1)/2;
if(Judge(m,N,K))l = m;
else r = m-1;
}
printf("Case #%d: %d\n",_,l);
}
return 0;
}