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 }