田继赛马 + 贪心算法

如果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);



        



    }



}

 

你可能感兴趣的:(贪心算法)