Cod sursa(job #2556924)

Utilizator AplayLazar Laurentiu Aplay Data 25 februarie 2020 12:31:27
Problema Subsecventa de suma maxima Scor 40
Compilator java Status done
Runda Arhiva educationala Marime 1.25 kb
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main {
    
    public static void main(final String[] args) throws IOException {
        final Scanner reader = new Scanner(new File("ssm.in"));
        final int n = reader.nextInt();
        final int[] N = new int[n];
        for (int it = 0; it < n; ++it) {
            N[it] = reader.nextInt();
        }
        reader.close();

        final int[] best = new int[n];
        final int[] parent = new int[n];
        best[0] = N[0];
        parent[0] = 0;
        int result = best[0];
        int resultEnd = 0;
        for (int it = 1; it < n; ++it) {
            best[it] = N[it];
            parent[it] = it;
            if (best[it] < best[it - 1] + N[it]) {
                best[it] += best[it - 1];
                parent[it] = parent[it - 1];
            }
            if (result < best[it]) {
                result = best[it];
                resultEnd = it;
            }
        }

        final BufferedWriter writer = new BufferedWriter(new FileWriter("ssm.out"));
        writer.write(result + " " + (1 + parent[resultEnd]) + " " + (1 + resultEnd) + "\n");
        writer.flush();
        writer.close();
    }

}