1092 最好吃的月饼——20分

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

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

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

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

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

输入样例:

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

输出样例:

2018
3 5

| 代码长度限制 | 时间限制 | 内存限制 |
| 16KB | 200ms | 64MB |

代码:

#include<bits/stdtr1c++.h>
using namespace std;
struct mooncake {
	int id, sum = 0;
} m[1005]; //将月饼作为结构体的形式进行储存,属性有编号和销售总量,销售总量初始时为0
int cmp(mooncake a, mooncake b) {
	return a.sum == b.sum ? a.id<b.id : a.sum>b.sum; //按销售总量降序排列,若相同则按编号升序排列
}
int main() {
	int N, M, t;
	cin >> N >> M;
	while (M--) {
		for (int i = 0; i < N; i++) {
			cin >> t;
			m[i].id = i + 1; //数组下标从0开始,但是编号从1开始,要注意加1
			m[i].sum += t; //将每个城市的销售量累加
		}
	}
	sort(m, m + N, cmp); //对结构体数组自定义排序
	cout << m[0].sum << endl; //输出最高的销售总量
	cout << m[0].id; //输出id
	for (int i = 1; i < N; i++) { //此循环用于遍历查找是否有多个编号的销售量相同,有则将剩下编号的输出
		if (m[i].sum == m[0].sum)
			cout << " " << m[i].id;
	}
	return 0;
}
posted @ 2022-09-02 10:35  Fare-Well  阅读(23)  评论(0)    收藏  举报