#include <bits/stdc++.h>
using namespace std;
using ll = long long; using pii = pair<ll,ll>; using ld = long double; using ti = pair<ld,pii>;
const ll INF = 1e18;
ld d(ll a, ll b) {
return (((ld)a)/b);
}
ti fz(ti a, ti b) {
pii pc = {a.second.first+b.second.first,a.second.second+b.second.second};
return {d(pc.first,pc.second),pc};
}
vector<ti> getv(vector<ll> v1) {
vector<ti> vf;
for (ll i=0;i<(v1.size()-1);i++) {
vf.push_back({d(v1[i+1]-v1[i],1),{v1[i+1]-v1[i],1}});
while (vf.size()>=2 && vf[vf.size()-2].first>vf[vf.size()-1].first) {
ti a = vf.back(); vf.pop_back();
ti b = vf.back(); vf.pop_back();
vf.push_back(fz(a,b));
}
}
return vf;
}
ll solve(vector<ll> v1, vector<ll> v2) {
ll N = v1.size(); ll M = v2.size();
if (N<=1 || M<=1) {
return 0;
}
for (ll i=(N-2);i>=0;i--) {
v1[i]=min(v1[i],v1[i+1]);
}
for (ll i=(M-2);i>=0;i--) {
v2[i]=min(v2[i],v2[i+1]);
}
vector<ti> vt1 = getv(v1);
vector<ti> vt2 = getv(v2);
vector<pair<ld,pair<ll,pii>>> vs;
for (ti A0: vt1) {
vs.push_back({A0.first,{0,A0.second}});
}
for (ti A0: vt2) {
vs.push_back({A0.first,{1,A0.second}});
}
sort(vs.begin(),vs.end());
ll csum[2] = {0,0};
ll ans = 0;
for (auto A0: vs) {
ll t0 = A0.second.first;
pii p0 = A0.second.second;
ll pv = p0.first;
ll pn = p0.second;
ans += pn*csum[1-t0];
csum[t0]+=pv;
}
return ans;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0);
ll H,W; cin >> H >> W;
vector<ll> A,B;
ll ans = 0;
ll vamin = INF;
ll xamin = -1;
for (ll i=0;i<H;i++) {
ll a1; cin >> a1;
A.push_back(a1);
if (a1<vamin) {
vamin = a1;
xamin = i;
}
}
ll vbmin = INF;
ll xbmin = -1;
for (ll i=0;i<W;i++) {
ll a1; cin >> a1;
B.push_back(a1);
if (a1<vbmin) {
vbmin = a1;
xbmin = i;
}
}
vector<ll> v1t,v2t;
for (ll i=xamin;i>=0;i--) {
v1t.push_back(A[i]-vamin);
}
for (ll i=xbmin;i>=0;i--) {
v2t.push_back(B[i]-vbmin);
}
vector<ll> v1b,v2b;
for (ll i=xamin;i<H;i++) {
v1b.push_back(A[i]-vamin);
}
for (ll i=xbmin;i<W;i++) {
v2b.push_back(B[i]-vbmin);
}
ans += (vamin*(W-1)+vbmin*(H-1));
ans += solve(v1t,v2t);
ans += solve(v1b,v2b);
cout << ans << "\n";
}