#include<bits/stdc++.h>
using namespace std;
#define N 1010000
#define ll long long
#define lb long double
#define P pair<int,int>
#define LL long long
//#define P 1000000007ll
//priority_queue<int >que;
//priority_queue<int,vector<int>,greater<int> >que;
//upper_bound(nums.begin(), nums.end(), value);
int n,m;
int a[N],b[N],va[N],t;
int hou[N],qian[N];
int check(int v){
va[1]=v;
for(int i=2;i<=n;i++){
va[i]=a[i];
}
sort(va+1,va+1+n);
int res=0;
int r=1;
for(int i=1;i<=n;i++){
r=max(r,i);
while(va[i]>=b[r] && r<n+1)
r++;
res=max(r-i,res);
}
// cout<<"[check]"<<res<<endl;
return res;
}
void solve(){
cin>>n>>m;
a[1]=1;
for(int i=2;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
sort(a+1,a+n+1);
sort(b+1,b+n+1);
t=0;
int r=1;
for(int i=1;i<=n;i++){
r=max(r,i);
while(a[i]>=b[r] && r<n+1)
r++;
t=max(r-i,t);
}
int l=1;r=m;
int pos=m;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)!=t){//��1��
r=mid-1;
}else{
l=mid+1;
}
}
// cout<<"[DEBUG] t="<<t<<endl;
// cout<<"[DEBUG] pos="<<pos<<endl;
ll res1=l-1;
ll res2=m-res1;
ll ans=res1*t+res2*(t+1);
cout<<ans<<endl;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int T = 1;
cin>>T;
for (int t = 1; t <= T; t++) {
solve();
}
return 0;
}
/*
1
8 4
4 3 3 2 2 1 1
1 1 1 1 3 3 3 3
*/
Codeforces Round 905 (Div. 2) C. You Are So Beautiful
于 2023-11-09 16:49:42 首次发布