Cod sursa(job #3351100)

Utilizator robert.stefanRobert Stefan robert.stefan Data 16 aprilie 2026 18:52:50
Problema Subsecventa de suma maxima Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
// https://infoarena.ro/problema/ssm

#include<fstream>

using namespace std;

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

int main() {
	int n, v;
	fin >> n;

	int sumMax = 0; // suma maxima
	int sum = 0; // suma sevcentei candidat
	int posInceputSumMax; // pozitia de la care incepe subsecventa de suma maxima
	int posSfarsitSumMax; // pozitia la care se termina subsecventa de suma maxima
	int posInceputSum = 1; 

	for(int i = 1; i <= n; i++) {
		fin >> v;

		sum += v;

		if(sum > sumMax) {
			sumMax = sum;
			posInceputSumMax = posInceputSum;
			posSfarsitSumMax = i;
		}

		if(sum <= 0) {
			// consider ca subsecventa cu suma maxima 0 nu mai e candidat
			// suma(PQ) = suma(P) + suma(Q)
			// daca suma(P) = 0 => suma(PQ) = suma(Q)
			// atunci ignor subsecventa (P), pentru ca am nevoie de subsecventa minima

			sum = 0;
			posInceputSum = i+1; // incepe o nua subsecventa candidat pentru subsecventa de suma maxima
		}
	}


	fout << sumMax << " " << posInceputSumMax << " " << posSfarsitSumMax << endl;

	fin.close();
	fout.close();

	return 0;
}