Cod sursa(job #2905710)

Utilizator qubitrubbitQubit Rubbit qubitrubbit Data 23 mai 2022 10:41:53
Problema Subsecventa de suma maxima Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.22 kb
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try (Scanner sc = new Scanner(new FileReader("ssm.in"))) {
            int n = sc.nextInt();
            int[] a = new int[n];
            for (int i = 0; i < n; ++i) {
                a[i] = sc.nextInt();
            }
            int[] dp = new int[n];
            int[] start = new int[n];

            dp[0] = a[0];
            start[0] = 0;
            int max = a[0];
            int last = 0;
            for (int i = 1; i < n; ++i) {
                if (dp[i - 1] + a[i] > a[i]) {
                    dp[i] = dp[i - 1] + a[i];
                    start[i] = start[i - 1];
                } else {
                    dp[i] = a[i];
                    start[i] = i;
                }
                if (max < dp[i]) {
                    max = dp[i];
                    last = i;
                }
            }
            PrintWriter pw = new PrintWriter("ssm.out");
            pw.print(max + " " + (start[last] + 1) + " " + (last + 1));
            pw.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}