-
一遍过,常用的思路。用 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;
}