HDU1052 Tian Ji -- The Horse Racing

原题链接

思路:先小到大排序,从最大的开始比较,如果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;
}


posted on 2014-03-15 14:03  长木Qiu  阅读(144)  评论(0编辑  收藏  举报