原题链接
思路:先小到大排序,从最大的开始比较,如果An>Bn,则直接赢掉这局;如果An<Bn,则用A1输掉Bn;
如果An==Bn,则比较A1和B1,若相等或A1小,则A1和Bn比,否则A1赢掉B1;
#include <stdio.h>
#include <stdlib.h>
int a[1001], b[1001];
int cmp(const void *a, const void *b){
return *(int *)a - *(int *)b;
}
int main(){
int n, count, i;
int ax, ay, bx, by;
while(scanf("%d", &n), n){
count = 0;
for(i = 0; i != n; ++i)
scanf("%d", &a[i]);
for(i = 0; i != n; ++i)
scanf("%d", &b[i]);
qsort(a, n, sizeof(int), cmp);
qsort(b, n, sizeof(int), cmp);
ax = bx = count = 0;
ay = by = n - 1;
while(ax <= ay){
if(a[ay] > b[by]){
++count;
--ay;
--by;
}else if(a[ay] < b[by]){
--count;
++ax;
--by;
}else{
if(a[ax] < b[bx]){
--count;
++ax;
--by;
}else if(a[ax] == b[bx]){
if(a[ax] < b[by]) --count;
++ax; --by;
}else{
++ax; ++bx;
++count;
}
}
}
printf("%d\n", count * 200);
}
return 0;
}