Luogu P1650 田忌赛马
题目
如果我们最大比对面最大大,那么直接用。
如果我们最小比对面最小大,那么直接用。
否则用我们最小去换对面最大。
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
register int x=0;
register char c=getchar();
while(c>'9'||c<'0')
c=getchar();
while(c>='0'&&c<='9')
x=(x<<3)+(x<<1)+(c^48),c=getchar();
return x;
}
int a[10001],b[10001],n,ans,hda,tla,hdb,tlb;
bool aa[10001],bb[10001];
int main()
{
n=read();
int ans=0;
for(int i=1;i<=n;i++)
a[i]=read();
for(int i=1;i<=n;i++)
b[i]=read();
sort(a+1,a+n+1);
sort(b+1,b+n+1);
hda=1,hdb=1,tla=n,tlb=n;
while(n--)
if(a[tla]>b[tlb])
ans+=200,tla--,tlb--;
else
if(a[hda]>b[hdb])
ans+=200,hda++,hdb++;
else
if(a[hda]<b[tlb])
ans-=200,hda++,tlb--;
cout<<ans;
return 0;
}