田忌赛马:
把田忌的马和齐威王的马都按速度从大到小排序
1:如果田忌最快的马比齐威王最快的马快,田忌赢一场
2:如果田忌最慢的马比齐威王最慢的马快,田忌赢一场
3:如果以上两种都不存在,用田忌最慢的马与齐威王最快的马比,如果输:田忌输一场,如果不输:平局(之后比田忌和齐威王的第二匹马)
(如果田忌最快的马没有齐威王最快的马快,并且田忌最慢的马既没有齐威王最慢的马快,也不比齐威王最快的马慢,那么可以认为田忌和齐威王的所有马的速度都是一样的)
# include <stdio.h>
# include <algorithm>
# include <string.h>
bool cmp(int x, int y)
{
return x>y;
}
int a[1001], b[1001];
int main()
{
int n, i, j, win, fail;
while (scanf("%d", &n)!=EOF)
{
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
for (i = 0; i<n; i++)
scanf("%d", &a[i]);
for (i = 0; i<n; i++)
scanf("%d", &b[i]);
std::sort(a, a+n, cmp);
std::sort(b, b+n, cmp);
win = 0;
fail = 0;
int tj = n-1, qw = n-1;
for (i = 0, j = 0; i<=tj;)
{
if (a[i]>b[j])
{win++; i++; j++;}
else
{
if (a[tj]>b[qw])
{win++; tj--; qw--;}
else
{
if (a[tj]<b[j])
{fail++; tj--; j++;}
else
{i++; j++;}
}
}
}
printf("%d\n", 200*(win-fail));
}
return 0;
}