Cod sursa(job #1606791)

Utilizator andrei.mardaleAndrei Mardale andrei.mardale Data 20 februarie 2016 15:58:38
Problema Subsecventa de suma maxima Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.32 kb
package subsecventaSumaMaxima;

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

public class SumaMaxima {
	private int [] v;
	private int n;
	
	public void readData () {
		File f = new File("ssm.in");
		Scanner sc = null;
		try {
			sc = new Scanner(f);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		this.n = sc.nextInt();
		
		this.v = new int[this.n];
		for (int i = 0; i < n; i++){
			this.v[i] = sc.nextInt();
		}
	}
	
	public void getSum() {
		int [] s = new int[n];
		s[0] = v[0];
		
		for (int i = 1; i < n; i++){
			if (v[i] > v[i] + s[i-1])
				s[i] = v[i];
			else
				s[i] = v[i] + s[i-1];
		}
		int max = s[0];
		int en = 0;
		for (int i = 1; i < n; i++){
			if (max < s[i])
			{
				max = s[i];
				en = i;
			}
		}
		int q = en;
		while (v[q] != s[q]){
			q--;
		}
		en++;
		q++;
		BufferedWriter bw = null;
		try {
			bw = new BufferedWriter(new FileWriter("ssm.out"));
			bw.write(max + " " + q + " " + en);
		} catch (IOException e) {
			e.printStackTrace();
		}
		finally {
			try {
				bw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		SumaMaxima sm = new SumaMaxima();
		
		sm.readData();
		sm.getSum();
	}

}