import std.stdio;
import std.string;
import std.conv;
import std.typecons;
import std.algorithm;
import std.functional;
import std.bigint;
import std.numeric;
import std.array;
import std.math;
import std.range;
import std.container;
import std.ascii;
void times(alias pred)(int n) {
    foreach(i; 0..n) pred();
}
auto rep(alias pred, T = typeof(pred()))(int n) {
    T[] res = new T[n];
    foreach(ref e; res) e = pred();
    return res;
}

void main() {
    int W, H;
    readf("%d %d\n", &W, &H);
    long[][] ary = (W.rep!(() => [0, readln.chomp.to!long])~H.rep!(() => [1, readln.chomp.to!long])).sort!((a, b){
        if (a[1]!=b[1]) return a[1]<b[1];
        return a[0]<b[0];
    }).array;
    int cnt0, cnt1;
    long ans = 0;
    ary.each!((a) {
        if (a[0]==0) {
            ans += a[1]*(H+1-cnt1);
            cnt0++;
        }
        if (a[0]==1) {
            ans += a[1]*(W+1-cnt0);
            cnt1++;
        }
    });
    ans.writeln;
}
