贪心。
一开始以为和田忌赛马的策略一样,码码码。。。突然发现不太对,如果就这的把最弱的卖了多亏啊。。。所以先比对一下自己家最弱的能不能干掉对手最弱的,如果不能再判一下能不能和最强的打成平局。如果不能就消耗了对面最强的即可。
#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
int n,ans;
const int N=100005;
int a[N],b[N];
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
sort(a+1,a+1+n);sort(b+1,b+1+n);
int la=1,lb=1,ra=n,rb=n;
for(int i=1;i<=n;i++){
if(a[la]>b[lb]) la++,lb++,ans+=2;
else if(a[ra]>b[rb]) ra--,rb--,ans+=2;
else {if(a[la]==b[rb])ans++;la++,rb--;}
}
printf("%d ",ans);
ans=0;
for(int i=1;i<=n;i++)swap(a[i],b[i]);
la=1,lb=1,ra=n,rb=n;
for(int i=1;i<=n;i++) {
if(a[la]>b[lb]) la++,lb++,ans+=2;
else if(a[ra]>b[rb]) ra--,rb--,ans+=2;
else {if(a[la]==b[rb])ans++;la++,rb--;}
}
printf("%d",n*2-ans);
}