编程语言:Java
题目:
题解:这里选择了先存储再处理,结果值更新的同时也要更新下标
结果:AC
import java.io.*;
import java.util.Scanner;
public class Main {
static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
static Scanner sc = new Scanner(new BufferedInputStream(System.in));
static int k;
static long res = -1;
static int tarl, tarr;
static int[] a;
public static void main(String[] args) throws IOException {
in.nextToken();
k = (int) in.nval;
a = new int[k];
for (int i = 0; i < k; i++) {
in.nextToken();
a[i] = (int) in.nval;
}
int i =-1;
while (i < k) {
i=find(i+1);
int j = i;
int sum = 0;
while (j < k) {
sum += a[j];
if (sum < 0)
break;
else if (sum > res) {
tarl = i;
tarr = j;
res = sum;
}
j++;
}
}
if (res != -1)
System.out.println(res + " " + a[tarl] + " " + a[tarr]);
else
System.out.println("0 " + a[0] + " " + a[k - 1]);
}
private static int find(int i) {
int j = i;
for (; j < k; j++) {
if (a[j] > -1) break;
}
return j;
}
}