Cod sursa(job #1365332)

Utilizator alexandru94hahahalera alexandru94 Data 28 februarie 2015 11:24:57
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("ssm.in");
ofstream out("ssm.out");

int main()
{
	int N = 0, s = 0, el = 0, suma_maxim = -1<<30, i = 0, a_idx = 0;
	int start_idx = 0, final_idx = 0;
	in >> N; // numarul de elemente
	in >> s; // suma partiala curenta 
	for(i = 2; i <= N; i++)
	{
		// citesc elementul
		in >> el;
		s += el;
		
		// daca elementul in sine este mai mare decat suma partiala 
		// curenta atunci inseamna ca pot sa bag elementul singur sa
		// fie suma partiala, reactualizez indexul de inceput de suma
		if (el > s) {
			s = el;
			a_idx = i;
		}
		
		// daca suma partiala este mai mare decat suma maxima curenta 
		// atunci reactualizam suma maxima curenta impreuna ca indecsii
		// asociati
		if (s > suma_maxim) {
			suma_maxim = s;
			start_idx = a_idx;
			final_idx = i;
		}
	}
	// se afiseaza
	out << suma_maxim << " " << start_idx << " " << final_idx << "\n";

	return 0;
}