http://acm.hdu.edu.cn/showproblem.php?pid=1052
貪心策略
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int cmp(const void *a, const void *b)
{
return (*((int *)b)) - (*((int *)a));
}
int main()
{
// freopen("input.txt", "r", stdin);
int n, tj[1005], king[1005];
int i;
int v, l;
while(scanf("%d", &n) && n){
for(i = 0; i < n; i ++){
scanf("%d", &tj[i]);
}
for(i = 0; i < n; i ++){
scanf("%d", &king[i]);
}
qsort(tj, n, sizeof(int), cmp);
qsort(king, n, sizeof(int), cmp);
v = l = 0;
int startj = 0, startk = 0, endj = n-1, endk = n-1;
for(i = 0; i < n; i ++){
if(tj[endj] > king[endk]){//田忌最慢的馬與國王最慢的馬比,如果田忌最慢的馬比國王最慢的馬快,那麼田忌勝
v ++;
endj --;
endk --;
}
else if(tj[endj] < king[endk]){//如果國王最慢的馬比田忌最慢的馬快,那麼就用國王最快的馬和田忌最慢的馬比,田忌負
l ++;
endj --;
startk ++;
}
else{//如果兩者最慢的馬速度相同,就拿國王最快的馬和田忌最快的馬比
if(tj[startj] > king[startk]){//如果國王最快的馬沒有田忌最快的馬快,那麼田忌勝
v ++;
startj ++;
startk ++;
}
else {//如果田忌最快的馬不比國王最快的馬快,那麼就拿國王最快的馬和田忌最慢的馬比,如果田忌最慢的馬比國王最快的馬慢,那麼田忌負,否則平手
if(tj[endj] < king[startk])
l ++;
endj --;
startk ++;
}
}
}
// printf("v = %d, p = %d, l = %d\n", v, p, l);
printf("%d\n", 200*(v - l));
}
return 0;
}