Cod sursa(job #2780900)

Utilizator dragutamihai1234Draguta Mihai dragutamihai1234 Data 8 octombrie 2021 09:37:24
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb

#include <fstream>

using namespace std;

void ssm(ifstream &in, ofstream &out) {
	int n, x;
	in >> n;

	int start = 0;
	int bestStart = 0, bestStop = 0;
	int best;
	in >> best;
	int sum = best;

	for (int i = 1; i < n; i++) {
		in >> x;
		sum += x;
		if (best < sum) {
			best = sum;
			bestStart = start;
			bestStop = i;
		}
		if (sum < 0) {
			// daca suma curenta e negativa, incep sa verific o noua
			// subsecventa care va incepe fie de la pasul curent daca x e
			// pozitiv, fie de la pozitia urmatoare
			if (x > 0) {
				sum = x;
				start = i;
			} else {
				sum = 0;
				start = i + 1;
			}
		}
	}
	out << best << ' ' << bestStart + 1 << ' ' << bestStop + 1;
}

int main(void) {
	ifstream in("ssm.in");
	ofstream out("ssm.out");
	ssm(in, out);
	in.close();
	out.close();
	return 0;
}