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 }