import sys
from heapq import heappush,heappop,heapify
input=sys.stdin.readline
def solve():
    n,m=map(int,input().split())
    heap=[]
    heap.extend([*map(lambda x:(-int(x),0),input().split())])
    heap.extend([*map(lambda x:(-int(x),1),input().split())])
    heapify(heap)
    ans=0
    while heap:
        num,is_c=heappop(heap)
        num=-num
        if is_c:
            m-=1
            ans+=n*num
        else:
            n-=1
            ans+=m*num
    print(ans)
for _ in range(1):
    solve()

观察数据范围n,m(1≤n,m≤1e5)可知不能真的用二维数组去模拟

要使所有元素之和是最大值,大的值不应被覆盖

大的涂完后,将对应的行或列减1即可,值增加数字*对应的行数或列数