Pagini recente » Cod sursa (job #1424763) | Cod sursa (job #2176816) | Cod sursa (job #2458756) | Cod sursa (job #2319934) | Cod sursa (job #3292656)
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public final static String INPUT_FILE = "ssm.in";
public final static String OUTPUT_FILE = "ssm.out";
static class Task {
int n;
int[] s;
public void solve() throws FileNotFoundException {
readInput();
writeOutput(getResult());
}
private void readInput() throws FileNotFoundException {
var sc = new Scanner(new FileReader(INPUT_FILE));
n = sc.nextInt();
s = new int[n];
for (int i = 0; i < n; i++) {
s[i] = sc.nextInt();
}
sc.close();
}
private void writeOutput(ArrayList<Integer> result) throws FileNotFoundException {
try (var out = new PrintStream(OUTPUT_FILE)) {
for (int i = 0; i < result.size(); i++)
out.print(result.get(i) + " ");
}
}
private ArrayList<Integer> getResult() {
int[] dp = new int[n + 1];
int elemMax = s[0], idMax = 0;
dp[0] = s[0]; // primul element trebuie sa fie el insusi
for (int i = 1; i < n; i++) {
dp[i] = Math.max(s[i], dp[i - 1] + s[i]);
if (dp[i] > elemMax) {
elemMax = dp[i];
idMax = i;
}
}
ArrayList<Integer> result = new ArrayList<>();
result.add(elemMax);
for (int i = idMax; i >= 0; i--) {
if (s[i] == dp[i]) {
result.add(i + 1);
break;
}
}
result.add(idMax + 1);
// for (int i = idMax; i >= 0; i--) {
// if (s[i] != dp[i])
// result.add(0, s[i]);
// else {
// result.add(0, s[i]);
// break;
// }
// }
return result;
}
}
public static void main(String[] args) throws IOException {
new Task().solve();
}
}