NYOJ 364 田忌赛马

View Code
 1 #include<stdio.h>
2 #include<stdlib.h>
3
4 int T[1001];
5 int K[1001];
6
7 int cmp(const void *x,const void *y)
8 {
9 int *m = (int *)x;
10 int *n = (int *)y;
11 return *m-*n;
12 }
13
14 int main()
15 {
16 int i,t;
17 while(scanf("%d",&t) != EOF)
18 {
19 for(i=0;i<t;++i)
20 scanf("%d",&T[i]);
21 for(i=0;i<t;++i)
22 scanf("%d",&K[i]);
23 qsort(T,t,sizeof(T[0]),cmp);
24 qsort(K,t,sizeof(K[0]),cmp);
25
26 int TH= 0;
27 int TT= t-1;
28 int KH= 0;
29 int KT= t-1;
30 int win = 0;
31 while(TH<=TT)//不断的缩小范围
32 {
33 if(T[TH]>K[KH])//当田忌的最慢的马比齐王的最慢的马快时 就用 最慢的对最慢的 范围缩小到(n-1)
34 {
35 win++;
36 TH++;
37 KH++;
38 }
39 else if(T[TT]>K[KT])//当田忌的最快的马比齐王的最快的马 快时,就用最快的对最快的 范围又缩小一
40 {
41 win++;
42 TT--;
43 KT--;
44 }
45 else //当以上都不成立时 比较 田忌最慢的 和 齐王最快的
46 {
47 if(T[TH]<K[KT])win--;// 比之小 则输一场 若相等 则不变 不管是小还是相等范围都又缩小
48 TH++;
49 KT--;
50 }
51 }
52 printf("%d\n",win*200);
53 }
54 return 0;
55 }

 

posted @ 2012-04-02 12:52  知行执行  阅读(248)  评论(0编辑  收藏  举报