#include<bits/stdc++.h>
using namespace std;
#define ll long long
// bool fun(vector<int>&a,vector<int>&b){
// if(a[0]!=b[0]) return a[0]<b[0];
// return a[1]>b[1];
// }
void solve(){
ll n,p;
cin>>n>>p;
vector<ll> a(n),b(n);
for(ll i=0;i<n;i++) cin>>a[i];
for(ll i=0;i<n;i++) cin>>b[i];
vector<vector<ll>> c(n+1);
for(ll i=0;i<n;i++) c[i]={b[i],a[i]};
c[n]={p,n-1};
sort(c.begin(),c.end());
if(c[0][0]>=p){
cout<<n*p<<"\n";
return;
}
ll ans=p;
priority_queue<vector<ll>,vector<vector<ll>>,greater<vector<ll>>> pq;
pq.push(c[0]);
int ind=1;
while(!pq.empty()){
vector<ll>temp=pq.top();
pq.pop();
int cnt=temp[1],cost=temp[0];
while(ind<n && cnt>0){
pq.push(c[ind]);
ind++;
ans+=cost;
cnt--;
}
if(ind>=n) break;
}
cout<<ans<<"\n";
}
int main(){
ll t;
cin>>t;
while(t--){
solve();
}
}
1691B - Shoe Shuffling | 1706A - Another String Minimization Problem |
1695B - Circle Game | 1702B - Polycarp Writes a String from Memory |
1701A - Grass Field | 489C - Given Length and Sum of Digits |
886B - Vlad and Cafes | 915A - Garden |
356A - Knight Tournament | 1330A - Dreamoon and Ranking Collection |
1692B - All Distinct | 1156C - Match Points |
1675A - Food for Animals | 1328C - Ternary XOR |
1689A - Lex String | 1708B - Difference of GCDs |
863A - Quasi-palindrome | 1478A - Nezzar and Colorful Balls |
1581B - Diameter of Graph | 404A - Valera and X |
908A - New Year and Counting Cards | 146A - Lucky Ticket |
1594C - Make Them Equal | 1676A - Lucky |
1700B - Palindromic Numbers | 702C - Cellular Network |
1672C - Unequal Array | 1706C - Qpwoeirut And The City |
1697A - Parkway Walk | 1505B - DMCA |