Cod sursa(job #2680255)

Utilizator mstevanStevan mstevan Data 3 decembrie 2020 01:21:49
Problema Subsecventa de suma maxima Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 2.41 kb
import java.io.*;
import java.util.Scanner;

public class Main {
    private static int n;
    private static int[] array;

    public static void main(String[] args) {
        File inputFile = new File("ssm.in");
        File outputFile = new File("ssm.out");

        try {
            FileInputStream inputStream = new FileInputStream(inputFile);
            Scanner scanner = new Scanner(inputStream);
            FileOutputStream outputStream = new FileOutputStream(outputFile);
            PrintWriter writer = new PrintWriter(outputStream);

            n = scanner.nextInt(); // number of letters in 1st
            array = new int[n];
            int[] longestsequence = new int[n];
            for (int i = 0; i < n; i++) {
                longestsequence[i] = 1;
                array[i] = scanner.nextInt();
            }









            int maxsum = array[0];
            int maxposition = 0;
            int currentsum = maxsum;
            int windowsize = 1;
            for (int i = 0; i < n - windowsize; ) {
                if (array[windowsize + i] + currentsum >= 0) {
                    currentsum = currentsum + array[windowsize + i];
                    windowsize++;
                }
                else
                {
                    i++;
                    currentsum = array[i];
                    windowsize = 1;
                }

                if (currentsum > maxsum) {
                    maxsum = currentsum;
                    maxposition = i;
                }
            }

//            for (int i = 0; i < n - windowsize; ) {
//                if (array[windowsize + windowstartposition] + currentsum > maxsum) {
//                    windowsize++;
//                    maxsum += array[windowsize + windowstartposition];
//                    maxposition = i;
//                }
//                else
//                {
//                    i++;
//                    windowstartposition++;
//                    for (int j = windowstartposition; j < windowsize + windowstartposition; j++)
//                        currentsum += array[j];
//                }
//            }

            String sequence = "" + maxsum;
            sequence += (maxposition + 1);
            sequence += windowsize + maxposition - 1;
            writer.print(sequence);

            inputStream.close();

            writer.close();
            outputStream.close();

        } catch (IOException e) {

        }
    }
}