Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
private static final int N = 10010;
private static int[] a = new int[N];
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
String[] input = reader.readLine().split(" ");
for (int i = 1; i <= n; i++) {
a[i] = Integer.parseInt(input[i - 1]);
}
int l = 1, r = 1;
int thisSum = -1, maxSum = -1;
for (int i = 1, start = 1; i <= n; i++) {
if (thisSum < 0) {
thisSum = 0;
start = i;
}
thisSum += a[i];
if (thisSum > maxSum) {
maxSum = thisSum;
l = start;
r = i;
}
}
if (maxSum < 0) {
System.out.printf("0 %d %d\n", a[1], a[n]);
} else {
System.out.printf("%d %d %d\n", maxSum, a[l], a[r]);
}
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
int n;
int a[N];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
int l = 1, r = 1, width = r - l;
int this_sum = -1, max_sum = -1;
for (int i = 1, start = 1; i <= n; ++i) {
if (this_sum < 0) {
this_sum = 0;
start = i;
}
this_sum += a[i];
if (this_sum > max_sum) {
max_sum = this_sum;
l = start, r = i;
}
}
if (max_sum < 0) printf("0 %d %d\n", a[1], a[n]);
else printf("%d %d %d\n", max_sum, a[l], a[r]);
return 0;
}