Cod sursa(job #3123252)

Utilizator minecraft4albert pucianu minecraft4 Data 22 aprilie 2023 18:39:43
Problema Subsecventa de suma maxima Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.7 kb
package org.example;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main {


    public static void main(String[] args) {

        int n;
        int[] v;
        int[] dp;
        int[] startDp;
        int[] endDp;

        try {

            File myFile = new File("ssm.in");
            Scanner myReader = new Scanner(myFile);

            n = myReader.nextInt();

            v = new int[n];
            for (int i = 0; i < n; i++) {
                v[i] = myReader.nextInt();
            }

            dp = new int[n];
            dp[0] = v[0];

            startDp = new int[n];
            startDp[0] = 1;

            endDp = new int[n];
            endDp[0] = 1;
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }

        int maximum = dp[0];
        int start = 1;
        int end = 1;

        for (int i = 1; i < n; i++) {
            if (dp[i-1] < 0) {
                dp[i] = v[i];
                startDp[i] = i + 1;
            } else {
                dp[i] = dp[i-1] + v[i];
                startDp[i] = startDp[i-1];
                endDp[i] = i +1;
            }
            if (dp[i] > maximum) {
                maximum = dp[i];
                start = startDp[i];
                end = endDp[i];
            }
        }

        FileWriter myWriter = null;
        try {
            myWriter = new FileWriter("ssm.out");
            myWriter.write(String.valueOf(maximum) + " " + String.valueOf(start) + " " +  String.valueOf(end));
            myWriter.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }





    }
}