Cod sursa(job #2155563)

Utilizator AndreiBadescuBadescu Andrei-Octavian AndreiBadescu Data 7 martie 2018 22:23:01
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>

using namespace std;

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

int n, i, j, x, s, t, st, dr, ma, mi = (1 << 30) - 1;

int main()
{
	fin >> n;

	for ( i = 0; i < n; ++i )
	{
		fin >> x;

		s += x;
		t = s - mi;

		if ( t < 0 )
		{
			mi = s;
			j = i + 1;
		}
		else
		{
			if ( t > ma )
			{
				ma = t;
				st = j, dr = i;
			}
			else if ( s == ma && i - j < dr - st )
				st = j, dr = i;
		}
	}

	--i;
	if ( t > ma )
	{
		ma = t;
		st = j, dr = i;
	}
	else if ( s == ma && i - j < dr - st )
		st = j, dr = i;

	fout << ma << " " << st + 1 << " " << dr + 1;
}