[关闭]
@xunuo 2017-03-19T18:01:31.000000Z 字数 980 阅读 1088

power oj 2609: 寻找爱吃饭的你---(结构体)

结构体


Description

正如题目所说,下面这个题目是关于吃饭的问题的QAQ。现在ACM集训队有14位大二大三大四的队员,然后每个人每天都会不定的吃几碗饭,某一天上决╇ф想找出谁是在最近n天里面吃饭最多的人,这里吃饭用碗数来计算。然后要我们找到这个吃饭最多的人是谁?

Input

输入一个数n,代表最近的n天。然后接下来n行,每行列出了每个队员的吃饭数量(每行秒描述14位队员的吃饭情况),也就是多少碗,输入顺序是固定的,按照样例t的输入格式。一定是样例中的14个人!

Output

要你输出这最近n天吃饭数最多的人的名字简称。如果两位队员吃饭数量相同,输出姓名简称字典序小的。

Sample Input

3
Zxy 3 Lyy 3 Dt 3 Hsh 10 Wdl 3 Yxr 3 Qmc 4 Dl 4 Ljl 4 Lt 4 Wwr 5 Hy 7 Wmq 6 Lc 3
Zxy 4 Lyy 4 Dt 5 Hsh 7 Wdl 3 Yxr 7 Qmc 4 Dl 4 Ljl 4 Lt 6 Wwr 5 Hy 8 Wmq 7 Lc 3
Zxy 3 Lyy 4 Dt 4 Hsh 10 Wdl 3 Yxr 7 Qmc 5 Dl 7 Ljl 3 Lt 5 Wwr 4 Hy 5 Wmq 7 Lc 2

Sample Output

Hsh

Hint

1≤n≤10^5, 每个人每天吃饭的碗数≤10^10

完整代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. long long sum[15],vis[15];
  4. char ans[5];
  5. struct node
  6. {
  7. char s[5];
  8. int v;
  9. }a[15];
  10. int main()
  11. {
  12. int n;
  13. while(scanf("%d",&n)!=EOF)
  14. {
  15. memset(sum,0,sizeof(sum));
  16. memset(vis,0,sizeof(vis));
  17. memset(ans,'Zzzzz',sizeof(ans));
  18. for(int i=0;i<n;i++)
  19. for(int j=0;j<14;j++)
  20. {
  21. scanf("%s%d",a[j].s,&a[j].v);
  22. sum[j]+=a[j].v;
  23. vis[j]=sum[j];
  24. }
  25. sort(sum,sum+14);
  26. for(int i=0;i<14;i++)
  27. if(vis[i]==sum[13]&&(strcmp(ans,a[i].s)>0))
  28. swap(ans,a[i].s);
  29. printf("%s\n",ans);
  30. }
  31. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注