• 一遍过,常用的思路。用 map 记录 key 和 val 然后用 max 记录最大数据,最后遍历一次,将 max 的 val 输出即可。

  • 参考了下别人的思路,因为无论是读取还是输出的时候,序号的顺序都是升序,所以不用 map 排序也可以,直接用 i ++ 下标存储和读取。

    然后找最大值的时候把对应元素的下标记录,最后根据下标输出即可。可能这样可以剩一点时间。

    还有就是更新最大值的方法,原本是通过判断语句来更新 max ,还有一种方式通过 max() 函数来更新 max 。

    maxn = max(maxn, sum[j])

    参考代码

#include <bits/stdc++.h>
using namespace std;

int main() {
	int N, M, max = 0;
	map<int, int> moon;
	cin >> N >> M;
	
	while(M--){
		int sales;
		for(int i = 1; i <= N; i++){
			cin >> sales;
			moon[i] += sales;
			
			// 标记最大销量
			if(max < moon[i]) max = moon[i]; 
		}
	}
	cout << max << endl;
	int first = 0;
	for(auto m: moon)
		if(max == m.second)
			cout << (first++ ? " " : "") << m.first;
}