意料之中Java会TE
//15分
//最后两个测试点超时
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
//输入
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String a[] = bf.readLine().split(" ");
int N = Integer.parseInt(a[0]);
int M = Integer.parseInt(a[1]);
String[][] str = new String[M][N];
StringBuffer sb = new StringBuffer("");
for (int i = 0; i < M; i++) {
str[i] = bf.readLine().split(" ");
}
//求最大值
long[] sum = new long[N];
long max = 0;
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
long s = Long.parseLong(str[i][j]);
sum[j] += s;
}
}
for (int k = 0; k < N; k++) {
if (max < sum[k]) {
max = sum[k];
}
continue;
}
for (int i = 0; i < N; i++) {
if (sum[i] == max) {
sb.append(i + 1 + " ");
}
}
System.out.println(max);
System.out.println(sb.toString().trim());
}
}
按照原思路用C++敲一遍
//20分
#include <iostream>
using namespace std;
int main(){
int max = 0, N, M, num[1001] = {0}, cnt = 0;
cin >> N >> M;
for(int i = 0; i < M; i++){
for(int j = 1; j <= N; j++){
int tmp;
cin >> tmp;
num[j] += tmp;
}
}
for(int i = 1; i <= N; i++)
if(num[i] > max)
max = num[i];
cout << max << endl;
for(int i = 1; i <= N; i++)
if(num[i] == max){
if(cnt)
cout << " ";
cout << i;
cnt++;
}
return 0;
}