#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
int n,k,bj[200001] = {0};
struct dyc{
int a,b;
}a[200001];
bool cmp(dyc x,dyc y){
return x.a<y.a;
}
map<int,int>mp;
int l[200001] = {0};
struct myj{
int id,val;
}b[200001];
bool cmp2(myj x,myj y){
return x.val>y.val;
}
signed main(){
cin.tie();
cout.tie();
int T;
cin>>T;
while(T--){
cin>>n>>k;
mp.clear();
for(int i = 1;i<=n;i++){
l[i] = 0;
cin>>a[i].a;
bj[i] = 0;
}
l[n+1] = 0;
for(int i = 1;i<=n;i++){
cin>>a[i].b;
}
sort(a+1,a+1+n,cmp);
for(int i = 1;i<=n;i++){
b[i].id = i;
b[i].val = a[i].b;
}
sort(b+1,b+1+n,cmp2);
int ans = 0;
for(int i = 1;i<=n;i++)mp[b[i].val] = i;
for(int i = n;i>=n-k+1;i--){
ans+=b[i].val;
}
int tag = n-k+1;
l[n+1] = ans;
for(int i = n;i>k;i--){
if(mp[a[i].b]>=tag){
tag--;
while(bj[tag]==1)tag--;
l[i] = l[i+1]-a[i].b+b[tag].val;
}else{
l[i] = l[i+1];
bj[mp[a[i].b]] = 1;
}
}
int tans = 2000000000000000000;
for(int i = k;i<=n;i++){
tans = min(tans,a[i].a*l[i+1]);
}
}
return 0;
}
https://atcoder.jp/contests/abc376/submissions/58985819