Pagini recente » Cod sursa (job #972297) | Cod sursa (job #2296306) | Cod sursa (job #1250799) | Cod sursa (job #1241048) | Cod sursa (job #2382173)
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
File file = new File("ssm.in");
Scanner sc = new Scanner(file);
FileWriter fileWriter = new FileWriter("ssm.out");
int n = sc.nextInt();
int[] v = new int[n];
int[] dp = new int[n];
int max = 0;
for(int i = 0; i < n ; i++) {
v[i] = sc.nextInt();
}
dp[0] = v[0];
// caz general
for (int i = 1; i < n; ++i) {
if (dp[i - 1] >= 0) {
// extinde la dreapta cu v[i]
dp[i] = dp[i - 1] + v[i];
} else {
// incep o noua secventa
dp[i] = v[i];
}
}
// solutia e maximul din vectorul dp
int sol = dp[0];
int stopIndex = 0;
for (int i = 1; i < n; ++i) {
if (dp[i] > sol) {
sol = dp[i];
stopIndex = i;
}
}
int startIndex = stopIndex;
int sum = 0;
while(startIndex != -1 && dp[stopIndex] != sum) {
sum+=v[startIndex];
startIndex--;
}
startIndex+=2;
stopIndex+=1;
sc.close();
fileWriter.write(sol+ " " + startIndex + " " + stopIndex);
fileWriter.close();
}
}