题目有几种情况
1.田忌最快的马比齐威王最快的马快
2.田忌最快的马比齐威王最快的马慢
3.田忌最快的马和齐威王最快的马速度相等
(1)田忌最慢的马比齐威王最慢的马速度快
(2)田忌最慢的马比齐威王最慢的马速度慢或者相等
//Memory 176K Time 63MS
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
while (scanf("%d", &n), n) {
int maxMoney = 0;
double arrT[1010], arrQ[1010];
for (int i = 0; i < n; i++)
scanf("%lf", &arrT[i]);
for (int i = 0; i < n; i++)
scanf("%lf", &arrQ[i]);
sort(arrT, arrT + n);
sort(arrQ, arrQ + n);
int indexLeftT = 0, indexLeftQ = 0, indexRightT = n - 1, indexRightQ = n - 1;
while (indexLeftT <= indexRightT) {
if (arrT[indexRightT] > arrQ[indexRightQ])
maxMoney += 200, indexRightT--, indexRightQ--;
else if (arrT[indexRightT] < arrQ[indexRightQ])
maxMoney -= 200, indexLeftT++, indexRightQ--;
else {
//田忌最快的马和齐威王最快的马速度相等
//即比较双方最慢的马
if (arrT[indexLeftT] > arrQ[indexLeftQ])
maxMoney += 200, indexLeftT++, indexLeftQ++;
else { //田忌最慢的马比齐威王最慢的马要慢或者相等
//这里可能出现两种情况(1)田忌最慢的马和齐威王最快的马速度一样
//则为平局
//(2)田忌最慢的马比齐威王最快的马慢
if (arrT[indexLeftT] < arrQ[indexRightQ])
maxMoney -= 200, indexLeftT++, indexRightQ--;
else if (arrT[indexLeftT] == arrQ[indexRightQ])
indexLeftT++, indexRightQ--;
}
}
}
printf("%d\n", maxMoney);
}
return 0;
}