好长一篇阅读理解,不过题意不难理解,第一行给出n表示有n场比赛,以下两行分别给出n个数,分别表示田忌和齐王n匹马的速度,赢家从输者手中获得200钱,求田忌最多能赢多少钱。
思路:
1、当田忌最快的马比齐王最快的马快时,用田忌最快的马对抗齐王最快的马,赢一场。
2、当田忌最慢的马比齐王最慢的马快时,用田忌最慢的马对抗齐王最慢的马,赢一场。
3、当1、2都不满足时,用田忌最慢的马对抗齐王最快的马,若田忌最慢的马比齐王最快的慢时,输一场,否则平局。
代码实现:
#include<iostream>
#include<algorithm>
using namespace std;
int tian[1005],king[1005];
bool cmp(int a,int b)
{
return a>b;
}
int match(int n)
{
sort(tian,tian+n,cmp);
sort(king,king+n,cmp);
int tl=0,tr=n-1,kl=0,kr=n-1,win=0,lose=0;
while(tl<=tr)
{
if(tian[tl]>king[kl])
{
win++;
tl++;
kl++;
}
else if(tian[tr]>king[kr])
{
win++;
tr--;
kr--;
}
else
{
if(tian[tr]<king[kl])
lose++;
tr--;
kl++;
}
}
return (win-lose)*200;
}
int main()
{
int n,i;
while(cin>>n)
{
for(i=0;i<n;i++)
cin>>tian[i];
for(i=0;i<n;i++)
cin>>king[i];
cout<<match(n)<<endl;
}
return 0;
}