Pagini recente » Cod sursa (job #2826559) | Cod sursa (job #411912) | Cod sursa (job #1134368) | Cod sursa (job #1749587) | Cod sursa (job #1618092)
package ssm;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
private int [] v;
int n;
private void readData() {
Scanner reader = null;
try {
reader = new Scanner (new FileInputStream("ssm.in"));
n = reader.nextInt();
v = new int[n];
for (int i = 0; i < n-1; i++){
v[i] = reader.nextInt();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
finally {
reader.close();
}
}
public int maxSum (int st, int en) {
if (st == en){
return v[st];
}
int m = st + (en - st) / 2;
int maxLeft = maxSum (st, m);
int maxRight = maxSum (m+1, en);
int leftBorderSum = 0, maxLeftBorderSum = Integer.MIN_VALUE;
for (int i = m; i >= st; i--) {
leftBorderSum += v[i];
if (leftBorderSum > maxLeftBorderSum)
maxLeftBorderSum = leftBorderSum;
}
int rightBorderSum = 0, maxRightBorderSum = Integer.MIN_VALUE;
for (int i = m+1; i <= en; i++){
rightBorderSum += v[i];
if (rightBorderSum > maxRightBorderSum)
maxRightBorderSum = rightBorderSum;
}
int maxMid = maxLeftBorderSum + maxRightBorderSum;
return Math.max(maxMid, Math.max(maxRight, maxLeft));
}
public static void main(String[] args) {
Main m = new Main();
m.readData();
System.out.println(m.maxSum(0, m.v.length - 1));
}
}