#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5+50;
int ans, a[N], b[N], h, w;
vector<int> ha, hb;
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> h >> w;
for (int i = 1; i <= h; i++) cin >> a[i];
for (int i = 1; i <= w; i++) cin >> b[i];
for (int i = 1; i <= h; i++) {
while (ha.size() >= 2) {
int u = ha[ha.size()-2], v = ha[ha.size()-1];
if ((a[v]-a[u])*(i-u) >= (a[i]-a[u])*(v-u)) { // lower hull
ha.pop_back();
}
else break;
}
ha.push_back(i);
}
for (int i = 1; i <= w; i++) {
while (hb.size() >= 2) {
int u = hb[hb.size()-2], v = hb[hb.size()-1];
if ((b[v]-b[u])*(i-u) >= (b[i]-b[u])*(v-u)) { // lower hull
hb.pop_back();
}
else break;
}
hb.push_back(i);
}
int pa = 0, pb = 0, sa = ha.size(), sb = hb.size();
while (pa+1 < sa || pb+1 < sb) {
if (pa+1 == sa) { // goes right
ans += a[ha[pa]] * (hb[pb+1]-hb[pb]);
pb++;
}
else if (pb+1 == sb) {
ans += b[hb[pb]] * (ha[pa+1]-ha[pa]);
pa++;
}
else {
int df = (a[ha[pa+1]]-a[ha[pa]])*(hb[pb+1]-hb[pb]);
int rf = (b[hb[pb+1]]-b[hb[pb]])*(ha[pa+1]-ha[pa]);
if (df <= rf) {
ans += b[hb[pb]] * (ha[pa+1]-ha[pa]);
pa++;
}
else {
ans += a[ha[pa]] * (hb[pb+1]-hb[pb]);
pb++;
}
}
}
cout << ans << '\n';
return 0;
}