입력받은 v1, v2배열을 내림차순으로 정렬을 한다.
내림차순은 큰 수부터 비교를 하므로 v1의 인덱스가 v2의 인덱스보다 크다면 v2 나머지 인덱스는 다 v1의 인덱스보다 작으므로 더이상 비교하지 않아도 된다.
#include <bits/stdc++.h>
using namespace std;
bool cmp(int& a, int& b)
{
return a > b;
}
int main()
{
int t;
cin >> t;
while (t--)
{
int n, m, num, ans = 0;
vector<int> v1, v2;
cin >> n >> m;
for (int i = 0; i < n; ++i)
{
cin >> num;
v1.push_back(num);
}
for (int i = 0; i < m; ++i)
{
cin >> num;
v2.push_back(num);
}
sort(v1.begin(), v1.end(), cmp);
sort(v2.begin(), v2.end(), cmp);
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
if (v1[i] > v2[j])
{
// 내림차순으로 정렬이 되어있으므로
// v1[i]값이 v2[j]보다 크다면 j부터 m까지의 값은 다 작으므로 비교 할 필요 x
ans += m - j;
break;
}
}
}
cout << ans << '\n';
}
}