月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种。

B1092 最好吃的月饼 - 图1

若想评比出一种“最好吃”的月饼,那势必在吃货界引发一场腥风血雨…… 在这里我们用数字说话,给出全国各地各种月饼的销量,要求你从中找出销量冠军,认定为最好吃的月饼。

输入格式:

输入首先给出两个正整数 N(≤ 1000)和 M(≤ 100),分别为月饼的种类数(于是默认月饼种类从 1 到 N 编号)和参与统计的城市数量。

接下来 M 行,每行给出 N 个非负整数(均不超过 1 百万),其中第 i 个整数为第 i 种月饼的销量(块)。数字间以空格分隔。

输出格式:

在第一行中输出最大销量,第二行输出销量最大的月饼的种类编号。如果冠军不唯一,则按编号递增顺序输出并列冠军。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

  1. 5 3
  2. 1001 992 0 233 6
  3. 8 0 2018 0 2008
  4. 36 18 0 1024 4

输出样例:

  1. 2018
  2. 3 5

代码

  1. #include<stdio.h>
  2. const int KIND = 1001;
  3. const int CITY = 101;
  4. int main() {
  5. int cityNumber, kindNumber;
  6. scanf("%d%d", &kindNumber, &cityNumber);
  7. // Input the data
  8. int mooncake[CITY][KIND] = {0};
  9. for(int i = 0; i < cityNumber; i++) {
  10. for(int j = 0; j < kindNumber; j++) {
  11. scanf("%d", &mooncake[i][j]);
  12. }
  13. }
  14. // Traversal and compute the max
  15. int saleCounter[KIND] = {0};
  16. for(int j = 0; j < kindNumber; j++) {
  17. for(int i = 0; i < cityNumber; i++) {
  18. saleCounter[j] += mooncake[i][j];
  19. }
  20. }
  21. int MAX = 0;
  22. for(int i = 0; i < kindNumber; i++) {
  23. if(saleCounter[i] > MAX) {
  24. MAX = saleCounter[i];
  25. }
  26. }
  27. int championCount = 0;
  28. for(int i = 0; i < kindNumber; i++) {
  29. if(MAX == saleCounter[i]) {
  30. championCount++;
  31. }
  32. }
  33. // Display the result
  34. printf("%d\n", MAX);
  35. for(int i = 0; i < kindNumber; i++) {
  36. if(saleCounter[i] == MAX) {
  37. printf("%d", i + 1);
  38. if(i != kindNumber - 1 && championCount > 1)
  39. printf(" ");
  40. }
  41. }
  42. return 0;
  43. }