Cod sursa(job #3133007)

Utilizator daristyleBejan Darius-Ramon daristyle Data 24 mai 2023 18:36:35
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

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

struct Sum {///suma pe intervalul [begin;end)
		int value;
		int begin;
		int end;

		bool operator>(Sum other) const {
			if(value == other.value)
				return begin < other.begin;
			return value > other.value;
		}
};

int main() {
	int n, x;
	Sum sum, sum_max;
	fin >> n >> x;
	sum_max.value = sum.value = x;
	sum_max.begin = sum.begin = 0;
	sum_max.end = sum.end = 0;
	for(int i = 1; i < n; ++i){
		fin >> x;

		if(sum.value < 0){
			sum.value = 0;
			sum.end = sum.begin = i;
		}
		sum.value += x;
		++sum.end;

		if(sum > sum_max)
			sum_max = sum;
	}

	fout << sum_max.value << ' ' << sum_max.begin + 1 << ' ' << sum_max.end - 1 + 1
			 << '\n'; // + 1 pentru indexare de la 1

	fin.close();
	fout.close();
	return 0;
}