Cod sursa(job #1331990)

Utilizator RengelBotocan Bogdan Rengel Data 1 februarie 2015 15:16:26
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <limits.h>

using namespace std;

int main()
{
	int X;

	int best_begin = -1;
	int best_end = -1;
	int best_sum = 0;

	int current_begin = -1;
	int current_sum = 0;

	int max_minimum_value = INT_MIN;
	int max_minimum_position = -1;

	int N; cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> X;

		if (X < 0)
		{
			if (X > max_minimum_value)
			{
				max_minimum_value = X;
				max_minimum_position = i;
			}
		}

		int candidate_sum = current_sum + X;
		if (candidate_sum > 0)
		{
			if (current_sum == 0)
			{
				current_begin = i;
			}
			current_sum = candidate_sum;
		}
		else
		{
			current_sum = 0;
		}

		if (current_sum > best_sum)
		{
			best_sum = current_sum;
			best_begin = current_begin;
			best_end = i;
			cout << best_sum << '\n';
		}
	}

	if (best_sum == 0)
	{
		cout << max_minimum_value << ' ' << max_minimum_position + 1 << ' ' << max_minimum_position + 1;
	}
	else
	{
		cout << best_sum << ' ' << best_begin + 1 << ' ' << best_end + 1;
	}
	return 0;
}