#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int N=2e5+10;
struct P { int a,b; }a[N];
void solve() {
int n,k; scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i].a);
for(int i=1;i<=n;i++) scanf("%d",&a[i].b);
sort(a+1,a+n+1,[](P a,P b) { return a.a<b.a; });
long long sum=0; priority_queue<int>q;
for(int i=1;i<=k;i++) sum+=a[i].b,q.push(a[i].b);
long long ans=a[k].a*sum;
for(int i=k+1;i<=n;i++) {
long long sum2=a[i].a*(sum-(a[i].b>q.top()?a[i].b:q.top())+a[i].b);
if(sum2<ans) ans=sum2,sum-=(a[i].b>q.top()?a[i].b:q.top()),sum+=a[i].b,q.pop(),q.push(a[i].b);
}
printf("%lld\n",ans);
}
int main() {
int t; scanf("%d",&t);
while(t--) solve();
return 0;
}