Cod sursa(job #1331994)

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

using namespace std;

int main()
{
	freopen("ssm.in", "r", stdin);
	freopen("ssm.out", "w", stdout);

	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;
		}
	}

	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;
}