Pagini recente » Cod sursa (job #1254242) | Cod sursa (job #1535986) | Cod sursa (job #856559) | Cod sursa (job #273029) | Cod sursa (job #2382194)
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Scanner;
public class Main {
static class Sol{
int start;
int stop;
int val;
}
public static void main(String[] args) throws IOException {
/*File file = new File("ssm.in");
Scanner sc = new Scanner(file);*/
Scanner sc = new Scanner(System.in);
FileWriter fileWriter = new FileWriter("ssm.out");
int n = sc.nextInt();
int[] v = new int[n];
Sol[] dp = new Sol[2];
//int[] dp = new int[n];
int max = 0;
for(int i = 0; i < n ; i++) {
v[i] = sc.nextInt();
}
Sol s = new Main.Sol();
dp[0] = s;
dp[0].val = v[0];
int pos = 0;
dp[0].start = pos;
dp[0].stop = pos;
Sol sol = dp[0];
// caz general
for (int i = 1; i < n; ++i) {
if (dp[0].val >= 0) {
// extinde la dreapta cu v[i]
s = new Main.Sol();
dp[1] = s;
dp[1].val = dp[0].val + v[i];
dp[1].start = pos;
dp[1].stop = i;
} else {
// incep o noua secventa
s = new Main.Sol();
dp[1] = s;
pos = i;
dp[1].val = v[i];
dp[1].start = pos;
dp[1].stop = i;
}
dp[0]=dp[1];
if (dp[1].val > sol.val) {
sol = dp[1];
}
}
// solutia e maximul din vectorul dp
/*for (int i = 1; i < n; ++i) {
if (dp[i].val > sol.val) {
sol = dp[i];
}
}*/
sol.start+=1;
sol.stop+=1;
sc.close();
fileWriter.write(sol.val+ " " + sol.start + " " + sol.stop);
fileWriter.close();
}
}