Cod sursa(job #3292665)

Utilizator eulerdaAna Ana eulerda Data 8 aprilie 2025 22:17:22
Problema Subsecventa de suma maxima Scor 55
Compilator java Status done
Runda Arhiva educationala Marime 1.26 kb
import java.io.*;

public class Main {
	public final static String INPUT_FILE = "ssm.in";
	public final static String OUTPUT_FILE = "ssm.out";

	static class Task {
		int n;
		int[] s;

		public void solve() throws IOException {
			readInput();
			getResult();
		}

		private void readInput() throws IOException {
			BufferedReader reader = new BufferedReader(new FileReader(INPUT_FILE));
			n = Integer.parseInt(reader.readLine());
			s = new int[n];
			String[] parts = reader.readLine().split(" ");
			for (int i = 0; i < n; i++) {
				s[i] = Integer.parseInt(parts[i]);
			}
			reader.close();
		}

		private void getResult() throws IOException {
			int maxSum = s[0], currentSum = s[0];
			int start = 0, end = 0, tempStart = 0;

			for (int i = 1; i < n; i++) {
				if (currentSum < 0) {
					currentSum = s[i];
					tempStart = i;
				} else {
					currentSum += s[i];
				}

				if (currentSum > maxSum) {
					maxSum = currentSum;
					start = tempStart;
					end = i;
				}
			}

			PrintWriter out = new PrintWriter(new FileWriter(OUTPUT_FILE));
			out.println(maxSum + " " + (start + 1) + " " + (end + 1));
			out.close();
		}
	}

	public static void main(String[] args) throws IOException {
		new Task().solve();
	}
}