NYOJ 251

View Code
 1 /*
 2 题非常简单,但是英文 看了好久才理解意思
 3 题意:
 4 多人进行投标 每个人可以对同一物品可以投多次标但 价格必须
 5 不一样。 
 6 1.若有一个投标价值出现一次则这个投标人胜出
 7 2.若 没有唯一的投标价则 那个投标价投的次数最少,这个价格就是
 8 胜出的价格,若有多个价格 有最少的投标次数
 9 则去价格最低者,那个人第一次投这个价,谁胜出 
10 思路:
11 开辟一个数组 num[],记录各个价格投标的次数
12 然后从 1 开始搜到上限找出投标次数最少的和最先
13 投标者
14 需要用一个Struct数组存放{投标人,价格} 
15 */
16 #include<iostream>
17 #include<cstdio>
18 #include<cstring>
19 using namespace std;
20 
21 short int num[1001];
22 struct node 
23 {
24   char ch[7];
25   short int b;
26 }person[101];
27 
28 int main()
29 {
30   int U,M,i,k;
31   while(EOF!=scanf("%d%d",&U,&M))
32   {
33     memset(num,0,sizeof(num));
34     for(i=0;i!=M;++i)
35    {
36      scanf("%s%d",person[i].ch,&person[i].b);
37      num[person[i].b]++;
38    }
39  
40     int ct=100000;
41     for(i=1;i<=1000;++i)
42      {
43        if(num[i]&&ct>num[i])
44         {
45           ct=num[i];
46           k=i;
47         }
48      } 
49     for(i=0;i<M;++i)
50      if(person[i].b==k)break;
51     printf("The winner is %s\n",person[i].ch);
52     printf("The price is %d\n",person[i].b);
53   }
54   return 0;
55 }

 

posted @ 2012-04-24 20:20  知行执行  阅读(148)  评论(0编辑  收藏  举报