添加链接描述
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+9;
int arr[N];
int n,k;
priority_queue<int,vector<int>,greater<int>> q;
int kill(int mid){
while(q.size()){
int x=q.top();
q.pop();
if(mid>=x)mid+=x;
else {
q.push(x);
return mid;
}
}
return mid;
}
bool check(int mid){
while(q.size())q.pop();
for(int i=1;i<=k;i++){
q.push(arr[i]);
}
for(int i=k+1;i<=n;i++){
int nx=kill(mid);
if(q.size()>=k)return 0;
else q.push(arr[i]),mid=nx;
}
int nx=kill(mid);
if(q.size())return 0;
return 1;
}
signed main(){
std::ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int T;
cin>>T;
while(T--){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
int l=0,r=1e9;
while(l<r){
int mid=l+r>>1;
if(check(mid))r=mid;
else l=mid+1;
}
cout<<l<<"\n";
}
return 0;
}