Cod sursa(job #2762116)

Utilizator george_buzasGeorge Buzas george_buzas Data 5 iulie 2021 16:34:23
Problema Subsecventa de suma maxima Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#define INT_MIN -2147483648
using namespace std;

int partial_sum[6000001], v[6000001];

int main() {
	ifstream fin("ssm.in");
	ofstream fout("ssm.out");
	int n;
	fin >> n;
	for (int i = 1; i <= n; ++i) {
		fin >> v[i];
		partial_sum[i] = partial_sum[i - 1] + v[i];
	}
	int max_val = INT_MIN, start_pos = 1, end_pos = 1;
	for (int i = 1; i <= n; ++i) {
		for (int j = 0; j < i; ++j) {
			if ((partial_sum[i] - partial_sum[j] > max_val) || (partial_sum[i] - partial_sum[j] == max_val && (j + 1 < start_pos || (j + 1 == start_pos && i - j < end_pos - start_pos + 1)))) {
				max_val = partial_sum[i] - partial_sum[j];
				start_pos = j + 1;
				end_pos = i;
			}
		}
	}
	fout << max_val << " " << start_pos << " " << end_pos;
	return 0;
}