Cod sursa(job #2799135)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 12 noiembrie 2021 14:23:05
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <climits>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include<bitset>
#include <map>
#include <cstring>
#include<algorithm>

using namespace std;


int n;
int sMax, stMax, drMax, sum;

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


int main()
{


	fin >> n;
	int st = 1, dr = 1;
	sMax = INT_MIN, drMax = 0, stMax = 0;
	for (int i = 1; i <= n; i++)
	{
		int x;
		fin >> x;
		if (sum + x < x)
		{
			//schimb
			st = i;
			dr = i;
			sum = x;
			if (sum > sMax) {
				stMax = st;
				drMax = dr;
				sMax = sum;
			}
			else if (sum == sMax && dr-st<drMax-stMax) {
				stMax = st;
				drMax = dr;
			}
		}
		else {
			sum += x;
			dr = i;
			if (sum > sMax) {
				stMax = st;
				drMax = dr;
				sMax = sum;
			}
			else if (sum == sMax && dr - st < drMax - stMax) {
				stMax = st;
				drMax = dr;
			}
		}
	}
	fout << sMax << " " << stMax << " " << drMax;
	return 0;

}