解法一:贪心
注意考虑全是负数和0的特殊情况。
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
int N = (int) in.nval;
int[] nums = new int[N];
int max = -1, sum = 0;
int first = 0, last = N - 1, temp = 0;
for (int i = 0; i < N; ++i) {
in.nextToken();
nums[i] = (int) in.nval;
sum += nums[i];
if (sum < 0) {
sum = 0;
temp = i + 1;
} else if (sum > max) {
max = sum;
first = temp;
last = i;
}
}
if (max < 0) {
max = 0;
}
out.println(max + " " + nums[first] + " " + nums[last]);
out.flush();
}
}