/*
已知f[]与g[]两个整数数组,元素都已经从小到大排列,试编写程序算出f[]
中每一个元素比g[]中元素大的个数的总数。换句话说,f[0]比g[]中多少个
元素大、f[1]比g[]中多少个元素大等,这些值的总和就是所要求的答案。
*/
#include <iostream>
using namespace std;
template <typename T>
int dominantCount(T*, T*, int, int);
int main(void)
{
int m, n;
int *piArray1;
int *piArray2;
while (cin >> m >> n)
{
piArray1 = new int[m];
for (int i = 0; i < m; ++i)
{
cin >> piArray1[i];
}
piArray2 = new int[n];
for (int i = 0; i < n; ++i)
{
cin >> piArray2[i];
}
cout << dominantCount(piArray1, piArray2, m, n) << endl;
}
delete piArray1;
delete piArray2;
return 0;
}
template <typename T>
int dominantCount(T *p1, T *p2, int m, int n)
{
if (p1[m-1] <= p2[0])
{
return 0;
}
int i = 0;
int length = 0;
int count = 0;
while (i < m && length < n)
{
if (p1[i] > p2[length])
{
++length;
}
else
{
++i;
count += length;
}
}
if (i < m)
{
count += (m - i) * length;
}
return count;
}