杭电oj田忌赛马原题链接
题目描述:
思路:
1.将田的最快的马和王的最快的马进行比较,如果田最快的马比王的快则比之
2.如果田最快的马比王的慢,则将田最慢的马与王最快的马比
3。如果田最快的马与王最快的马速度相等
3.1将田最慢的马与王最慢的马进行比较,如果田最慢的马比王最慢的马快,则比之
3.2如果田最慢的马比王最慢的马慢,则田的慢比上王的快
3.3如果田最慢的马与王最慢的马速度相等,则田的慢比上王的快
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int x, int y)
{
return x>y;
}
int tian[1010],wang[1010];
int main()
{
int n;
while(scanf("%d",&n) == 1){
if(n == 0) break;
for(int i = 0; i < n; i++){
cin >> tian[i];
}
for(int i = 0; i < n; i++){
cin >> wang[i];
}
sort(tian, tian + n, cmp);
sort(wang, wang + n, cmp);
int sum = 0;
int tfast = 0, wfast = 0;
int tlow = n-1, wlow = n-1;
for(int i = 0; i < n; i++)
{
if(tian[tfast]>wang[wfast])
{
tfast++;
wfast++;
sum +=200;
}
else if(tian[tfast]<wang[wfast])
{
tlow--;
wfast++;
sum -= 200;
}
else if(tian[tfast] == wang[wfast])
{
if(tian[tlow] > wang[wlow])
{
tlow--;
wlow--;
sum += 200;
}
else if(tian[tlow] < wang[wfast])
{
tlow--;
wfast++;
sum -= 200;
}
}
}
printf("%d\n",sum);
}
return 0;
}