Cod sursa(job #3330397)

Utilizator livliviLivia Magureanu livlivi Data 19 decembrie 2025 12:34:29
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;

const int kN = 6e6;

long long sp[kN + 1];

/*
peste un vector v

sp[i] = v[1] + v[2] + ... + v[i]
sp[0] = 0

sum(l, r) = sp[r] - sp[l - 1]

v  =    5 -6  3  4 -2  3 -3
sp = 0  5 -1  2  6  4  7  4

sp = 0 -2 -1 -10 -9 -6 -3 -5 -8

*/

int main() {
	ifstream cin("ssm.in");
	ofstream cout("ssm.out");

	// int a = 2e9;
	// int b = a + a;
	// cout << b << "\n";


	int n; cin >> n;
	for (int i = 1; i <= n; i++) {
		int x; cin >> x;
		sp[i] = sp[i - 1] + x;
	}

	long long sum_max = sp[1];
	int st_max = 1, dr_max = 1;
	long long sp_min = 0;
	int poz_min = 0;

	for (int i = 1; i <= n; i++) {
		if (sp[i] - sp_min > sum_max) {
			sum_max = sp[i] - sp_min;
			st_max = poz_min + 1;
			dr_max = i;
		}

		if (sp[i] < sp_min) {
			sp_min = sp[i];
			poz_min = i;
		}
	}

	cout << sum_max << " " << st_max << " " << dr_max << "\n";
	return 0;
}