排序以后贪心,每次最强的比较能赢就赢,最弱的能赢就赢,否则就用最弱的去浪掉对面最强的。
最少得分可以用总分减去对方最多得分。
没了。
其实我一开始很想输出 n*2 n*2来着毕竟ZJ这么强怎么可能有输的。。。
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
using namespace std;
const int N=100005;
int n,a[N],b[N];
int work(int a[],int b[]){
int l1,l2,r1,r2,ans=0;
l1 = l2 = 1; r1 = r2 = n;
while (l1<=r1 && l2<=r2)
if (a[l1]>b[l2]) ans+=2,l1++,l2++;
else
if (a[r1]>b[r2]) ans+=2,r1--,r2--;
else ans+=(a[l1]==b[r2]),l1++,r2--;
return ans;
}
int main(){
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+n+1);
for (int i=1;i<=n;i++) cin>>b[i];sort(b+1,b+n+1);
cout<<work(a,b)<<" "<<n * 2 - work(b,a)<<endl;
return 0;
}