Cod sursa(job #3204941)

Utilizator tanaseanualexiaAlexia Tanaseanu tanaseanualexia Data 18 februarie 2024 13:08:13
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

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

	int n;
	fin >> n;

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

	int start = 1, end = 1;
	int currentStart = 1;
	int maxSum = arr[1];
	int currentSum = arr[1];

	for (int i = 2; i <= n; i++) {
		if (currentSum < 0) {
			currentSum = arr[i];
			currentStart = i;
		} else {
			currentSum += arr[i];
		}

		if (currentSum > maxSum) {
			maxSum = currentSum;
			start = currentStart;
			end = i;
		} else if (currentSum == maxSum) {
			if ((i - currentStart + 1 < end - start + 1) || (currentStart < start)) {
				start = currentStart;
				end = i;
			}
		}
	}

	fout << maxSum << " " << start << " " << end;

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

	return 0;
}