Cod sursa(job #1429867)

Utilizator serbanalex2202Serban Alexandru serbanalex2202 Data 7 mai 2015 13:18:05
Problema Subsecventa de suma maxima Scor 50
Compilator java Status done
Runda Arhiva educationala Marime 1.37 kb
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws IOException {
		Scanner reader = new Scanner(new FileReader("ssm.in"));

		int N = reader.nextInt(); // lungimea sirului

		int s_cur = 0, idx = 0, istart = 0, iend = 0, a;
		int smax = -99999;

		// afiV(a);

		// parcurgem vectorul de numere
		for (int i = 0; i < N; i++) {

			// facem si citirea tot aici pentru a u depasi limita de spatiu
			a = reader.nextInt();
			System.out.println(a);
			// daca suma este negativa index = i si suma = a[i]
			if (s_cur < 0) {
				s_cur = a;
				idx = i;
			} else {// else adaugam la suma suma+=a[i]
				s_cur += a;
			}
			// daca dupa ce am adugat noul element suma a ajuns mai mare decat ce mai mare suma

			if (smax < s_cur) {
				// ce mai mare suma ia valoarea sumei curente
				smax = s_cur;
				// indexul de inceput ia valoarea index ce retine pozitia de unde suma a inceput sa
				// creasca
				istart = idx;
				// indexul de sfarsit ia valoarea lui i
				iend = i;
			}
		}
		PrintWriter writer = new PrintWriter("ssm.out");
		writer.write(String.valueOf(smax) + " " + (istart + 1) + " " + (iend + 1) + "\n");
		writer.close();
		reader.close();

	}

	public static void afiV(int[] v) {
		for (int i = 0; i < v.length; i++) {
			System.out.println(v[i]);
		}
	}
}