直接贪心,最大就是可以放的最大的放上
最小就是建左视图和右视图一个数的中的最多的个数
#include<cstdio>
#include<iostream>
using namespace std;
int n,m,maxn;
int a[19999],b[19999],h[299999],h2[299999];
int ans,s;
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&a[i]),h[a[i]]++;for(int i=1;i<=m;i++) scanf("%d",&b[i]),h2[b[i]]++;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){s+=min(a[i],b[j]);maxn=max(maxn,max(a[i],b[j]));}for(int i=1;i<=maxn;i++)ans+=i*max(h[i],h2[i]);printf("%d %d",ans,s);
}