田继赛马 + 贪心算法
如果tian最弱的一匹马比king的最弱的一匹马强,那么tian win,
如果tian最弱的一匹马比king的最弱的一匹马弱,那么tian用这匹马与king最强的一匹马比,而相反tian用自己最强的马和king的这匹弱马相比。tian不输不赢
如果tian最弱的一匹马比king的最弱的一匹马一样,那么考虑tian和king最强的马,如果tian的最强马给力,那么在这四匹马的较量中,tian可以赢一次。如果king的最强马给力,tian的最弱马与之较量。
#include<stdio.h> int tian[1000]; int king[1000]; int comp(const void* a, const void * b){ return *(int *)a - *(int *)b; } int main(){ int i, j, s, e, sum, n; while(scanf("%d", &n) != EOF && n){ for(i = 0; i < n; i++) scanf("%d", &tian[i]); for(i = 0; i < n; i++) scanf("%d", &king[i]); qsort(king, n, sizeof(int), comp); qsort(tian, n, sizeof(int), comp); sum = 0; i = s = 0; j = e = n -1; while(i <= j){ if(tian[i] > king[s]){ sum++; i++; s++; }else if(tian[i] < king[s]){ sum--; i++; e--; }else{ if(tian[j] > king[e]){ sum++; j--; e--; } else{ if(tian[i] < king[e])sum--; e--; i++; } } } printf("%d\n",200 * sum); } }