// { Driver Code Starts
#include<bits/stdc++.h>
using namespace std;
// } Driver Code Ends
// Function to count number of pairs such that x^y is greater than y^x
// X[], Y[]: input arrau
// m, n: size of arrays X[] and Y[] respectively
int getIndex(int ele, int Y[], int last, int start, int n){
// cout <<"ele = " << ele <<" last = " << last << " start = " << start << "\t";
int middle = (start + last-1)/2;
// cout << "middle = " << middle << "\t";
if(last < n && ele > Y[last]){
return -1;
}
if(start >= 0 && Y[start] > ele){
return 1;
}
if(last <n && Y[last] <= ele){
return -1;
}
if(last == start){
if(last < n && Y[last] > ele){
return last;
}
return -1;
}
if(middle < n && ele >= Y[middle]){
// cout << "second half\n";
return getIndex(ele, Y, last, middle+1,n);
}
else{
// cout << "first half\n";
return getIndex(ele, Y, middle, start,n);
}
}
long long countPairs(int X[], int Y[], int m, int n)
{
//Your code here
long long count=0;
int idx=-1,i=0;
sort(Y, Y+n);
cout << "m = " << m << " n = " << n << "\n";
int k = i,x = 0;
cout << "count after 1s " << count <<"\n";
for(x = 0; x<m;x++){
if(x > m){
break;
}
// cout <<"m = " << m << " x = " << x << " ELEMENT IS " <<X[x] <<"\n";
idx = getIndex(X[x], Y, n-1, k,n);
if(idx != -1 && X[x] != 1){
cout << " ele in X" << X[x] <<" element in Y " << Y[idx] << "\n";
count++;
}
}
cout << "count " << count << "\n";
return count;
}
// { Driver Code Starts.
int main()
{
int T;
cin>>T;
while(T--)
{
int M,N;
cin>>M>>N;
int i,a[M],b[N];
for(i=0;i<M;i++)
{
cin>>a[i];
}
for(i=0;i<N;i++)
{
cin>>b[i];
}
cout<<countPairs(a, b, M, N)<<endl;
}
} // } Driver Code Ends
Ly8geyBEcml2ZXIgQ29kZSBTdGFydHMKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAKIC8vIH0gRHJpdmVyIENvZGUgRW5kcwoKCiAKCi8vIEZ1bmN0aW9uIHRvIGNvdW50IG51bWJlciBvZiBwYWlycyBzdWNoIHRoYXQgeF55IGlzIGdyZWF0ZXIgdGhhbiB5XngKLy8gWFtdLCBZW106IGlucHV0IGFycmF1Ci8vIG0sIG46IHNpemUgb2YgYXJyYXlzIFhbXSBhbmQgWVtdIHJlc3BlY3RpdmVseQppbnQgZ2V0SW5kZXgoaW50IGVsZSwgaW50IFlbXSwgaW50IGxhc3QsIGludCBzdGFydCwgaW50IG4pewoJCgkvLyBjb3V0IDw8ImVsZSA9ICIgPDwgZWxlIDw8IiBsYXN0ID0gIiA8PCBsYXN0IDw8ICIgc3RhcnQgPSAiIDw8IHN0YXJ0IDw8ICJcdCI7CgkKICAgIGludCBtaWRkbGUgPSAoc3RhcnQgKyBsYXN0LTEpLzI7CiAgICAvLyBjb3V0IDw8ICJtaWRkbGUgPSAiIDw8IG1pZGRsZSA8PCAiXHQiOwogICAgCiAgICBpZihsYXN0IDwgbiAmJiBlbGUgPiBZW2xhc3RdKXsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICAKICAgIGlmKHN0YXJ0ID49IDAgJiYgWVtzdGFydF0gPiBlbGUpewogICAgICAgIHJldHVybiAxOwogICAgfQogICAgCiAgICBpZihsYXN0IDxuICYmIFlbbGFzdF0gPD0gZWxlKXsKICAgIAlyZXR1cm4gLTE7CiAgICB9CiAgICAKICAgIGlmKGxhc3QgPT0gc3RhcnQpewogICAgICAgIGlmKGxhc3QgPCBuICYmIFlbbGFzdF0gPiBlbGUpewogICAgICAgICAgICByZXR1cm4gbGFzdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgCiAgICBpZihtaWRkbGUgPCBuICYmIGVsZSA+PSBZW21pZGRsZV0pewogICAgCS8vIGNvdXQgPDwgInNlY29uZCBoYWxmXG4iOwogICAgICAgIHJldHVybiBnZXRJbmRleChlbGUsIFksIGxhc3QsIG1pZGRsZSsxLG4pOwogICAgfQogICAgZWxzZXsKICAgIAkvLyBjb3V0IDw8ICJmaXJzdCBoYWxmXG4iOwogICAgICAgIHJldHVybiBnZXRJbmRleChlbGUsIFksIG1pZGRsZSwgc3RhcnQsbik7CiAgICB9Cn0KCgpsb25nIGxvbmcgY291bnRQYWlycyhpbnQgWFtdLCBpbnQgWVtdLCBpbnQgbSwgaW50IG4pCnsKICAgLy9Zb3VyIGNvZGUgaGVyZQogICBsb25nIGxvbmcgY291bnQ9MDsKICAgaW50IGlkeD0tMSxpPTA7CiAgIHNvcnQoWSwgWStuKTsKICAgY291dCA8PCAibSA9ICIgPDwgbSA8PCAiIG4gPSAiIDw8IG4gPDwgIlxuIjsKICAgCiAgIGludCBrID0gaSx4ID0gMDsKICAgY291dCA8PCAiY291bnQgYWZ0ZXIgMXMgIiA8PCBjb3VudCA8PCJcbiI7CiAgIAogICBmb3IoeCA9IDA7IHg8bTt4KyspewogICAJaWYoeCA+IG0pewogICAJCWJyZWFrOwogICAJfQogICAJLy8gY291dCA8PCJtID0gIiA8PCBtIDw8ICAiIHggPSAiIDw8IHggPDwgIiBFTEVNRU5UIElTICIgPDxYW3hdIDw8IlxuIjsKICAgICAgaWR4ID0gZ2V0SW5kZXgoWFt4XSwgWSwgbi0xLCBrLG4pOwogICAgICAKICAgICAgIGlmKGlkeCAhPSAtMSAmJiBYW3hdICE9IDEpewogICAgICAgCWNvdXQgPDwgIiBlbGUgaW4gWCIgPDwgWFt4XSA8PCIgZWxlbWVudCBpbiBZICIgPDwgWVtpZHhdIDw8ICJcbiI7CiAgICAgICAgICAgY291bnQrKzsKICAgICAgIH0KICAgfQogICBjb3V0IDw8ICJjb3VudCAiIDw8IGNvdW50IDw8ICJcbiI7CiAgIHJldHVybiBjb3VudDsKfQoKCi8vIHsgRHJpdmVyIENvZGUgU3RhcnRzLgppbnQgbWFpbigpCnsKCWludCBUOwoJY2luPj5UOwoJd2hpbGUoVC0tKQoJewoJCWludCBNLE47CgkJY2luPj5NPj5OOwoJCWludCBpLGFbTV0sYltOXTsKCQlmb3IoaT0wO2k8TTtpKyspCgkJewoJCQljaW4+PmFbaV07CgkJfQoJCWZvcihpPTA7aTxOO2krKykKCQl7CgkJCWNpbj4+YltpXTsKCQl9CgkJY291dDw8Y291bnRQYWlycyhhLCBiLCBNLCBOKTw8ZW5kbDsKCX0KfSAgLy8gfSBEcml2ZXIgQ29kZSBFbmRz