题目
代码
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
int n,tj[1005],qw[1005],i,sum=0;
cin >>n;
for(i=0;i<n;i++)
cin >>tj[i];
for(i=0;i<n;i++)
cin >>qw[i];
sort(tj,tj+n);
sort(qw,qw+n);//先将田忌和齐王的马按速度分别从小到大排列
int tjk,qwk,tjm,qwm;
tjk=qwk=n-1;//因为马数一样所以最快的在n-1位置
tjm=qwm=0;//最慢
while(tjm<=tjk)//因为要算田忌赢得次数,当慢马的下标大于快马时说明已经没马了
{
if(tj[tjk]>qw[qwk])//田忌快马比齐王快马快,就让快马比
{
sum++;
tjk--,qwk--;
}
else if(tj[tjk]<qw[qwk])//田忌快马比齐王快马慢,就让慢马比
{
tjm++,qwk--;
}
else//快马一样时
{
if(tj[tjm]>qw[qwm])//田忌慢马比齐王慢马快,让慢马比
sum++,tjm++,qwm++;
else//否则就让慢马与快马比
tjm++,qwk--;
}
}
cout << sum <<endl;
return 0;
}