Cod sursa(job #2794905)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 5 noiembrie 2021 17:56:58
Problema Subsecventa de suma maxima Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <cstdio>
#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,sum;
int sMax, stMax, drMax;
FILE* fin, * fout;



int main()
{
	fin = fopen("ssm.in", "r");
	fout = fopen("ssm.out", "w");

	fscanf(fin, "%d", &n);
	fscanf(fin, "%d", &sum);
	int st = 1, dr = 1;
	sMax = sum, drMax = dr, stMax = st;
	for (int i = 2; i <= n; i++)
	{
		int x;
		fscanf(fin, "%d", &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;
			}
		}
	}
	fprintf(fout, "%d %d %d", sMax, stMax, drMax);
	return 0;

}