Cod sursa(job #3268381)

Utilizator lucky1992Ion Ion lucky1992 Data 14 ianuarie 2025 21:12:10
Problema Subsecventa de suma maxima Scor 30
Compilator java Status done
Runda Arhiva educationala Marime 0.98 kb
import java.io.*;
import java.util.StringTokenizer;

public class Main {
  public static void main(String[] args) throws IOException {
    try (BufferedReader reader = new BufferedReader(new FileReader("ssm.in"));
         BufferedWriter writer = new BufferedWriter(new FileWriter("ssm.out"))) {
      int N = Integer.parseInt(reader.readLine());
      int[] a = new int[N+1];

      StringTokenizer st = new StringTokenizer(reader.readLine());
      for (int i = 1; i <= N; i++) {
        a[i] = Integer.parseInt(st.nextToken());
      }

      int[] best = new int[N+1];
      best[0] = 0;

      int sum = -1;
      int first = 1;
      int last = -1;

      for (int i = 1; i <= N; i++) {
        if (a[i] + best[i-1] > 0) {
          best[i] = a[i] + best[i-1];
        } else {
          best[i] = a[i];
          first = i;
        }

        if (best[i] > sum) {
          sum = best[i];
          last = i;
        }
      }

      writer.write(sum + " " + first + " " + last);
    }
  }
}