想到了双指针做法来决定策略,原本以为只要不断用自己最大
来寻找比皇帝小就ans += 200,但wa了,看了网上题解才知道原来还有第二步,通过对比另一边来决定策略
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1010;
int main()
{
int n;
while(cin>>n&&n)
{
int a[2][N];
for(int i=0;i<2;i++)
for(int j=1;j<=n;j++) cin>>a[i][j];
sort(a[0]+1,a[0]+n+1);
sort(a[1]+1,a[1]+n+1);
int al,ar,bl,br,ans = 0;
al = bl = 1,ar = br = n;
while(al<=ar&&bl<=br)
{
if(a[0][al]>a[1][bl])
{
ans += 200;
al++,bl++;
}
else if(a[0][al]<a[1][bl])
{
ans -= 200;
al++,br--;
}
else
{
if(a[0][ar]>a[1][br])
{
ans += 200;
ar--,br--;
}
else if(a[0][ar]<a[1][br])
{
ans -= 200;
al++,br--;
}
else
{
if(a[0][al]<a[1][br])
{
ans -= 200;
al++,br--;
}
else if(a[0][al]==a[1][br]) break;
}
}
}
cout<<ans<<endl;
}
}