Cod sursa(job #3353807)

Utilizator robert.stefanRobert Stefan robert.stefan Data 11 mai 2026 22:04:11
Problema Subsecventa de suma maxima Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
// https://infoarena.ro/problema/ssm

#include<fstream>

using namespace std;

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

int n;
int v[6000001];

int main() {
	fin >> n;

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

	int inceputSecvCandidat = 1; // indicele din vectorul v la care incepe o secventa candidat

	// initializam secventa de suma maxima cu primul element din vector, 
	// deoarece e posibil ca vectorul sa aiba doar numere negative, 
	// numere care ar fi ignorate de algoritmul propus
	int inceputSecvMax = 1;
	int sfarsitSecvMax = 1;
	int sumaSecvMax = v[1];

	int sumaSecvCandidat = 0; // suma secventei candidat

	for(int i = 1; i <= n; i++) {
		sumaSecvCandidat += v[i];

		if(sumaSecvCandidat <= 0) {
			inceputSecvCandidat = i + 1;
			sumaSecvCandidat = 0;
		} else {
			if(sumaSecvCandidat > sumaSecvMax) {
				inceputSecvMax = inceputSecvCandidat;
				sfarsitSecvMax = i;
				sumaSecvMax = sumaSecvCandidat;
			}
		}
	}

	fout << sumaSecvMax << " " << inceputSecvMax << " " << sfarsitSecvMax << "\n";

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

	return 0;
}