Cod sursa(job #3196813)

Utilizator BoggiGurau Bogdan Boggi Data 24 ianuarie 2024 20:23:50
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>
using namespace std;

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

struct SumS {
	int val, lft, rgt;
} maxS, crS;

int main()
{
	int noNums;
	cin >> noNums;
	crS.lft = 1;
	for (int i = 0; i <= noNums; ++i) {
		int number = 0;
		if (i < noNums) {
			cin >> number;
		}
		if (maxS.val < crS.val) {
			maxS = crS;
		}
		if (crS.val + number > 0) {
			crS.val += number;
			crS.rgt = i + 1;
		} else {
			crS.val = number;
			crS.lft = i + 1;
			crS.rgt = i + 1;
		}
		/*if (number > 0) {
			crS.val += number;
			crS.rgt = i + 1;
		} else {
			if (maxS.val < crS.val) {
				maxS = crS;
			}
			if (crS.val + number > 0) {
				crS.val += number;
				crS.rgt = i + 1;
			} else {
				crS.val = number;
				crS.lft = i + 1;
				crS.rgt = i + 1;
			}
		}*/
	}
	cout << maxS.val << ' ' << maxS.lft << ' ' << maxS.rgt;
}

/*
6
5 4 -3 -5 4 5
6 t
7 p2
7 u2

7
5 -6 3 4 -2 3 5 -3
Daca el < 0 facem maxim cu ceea ce avem 
Daca Ssub + el > 0 merita, altfel nu
Merita sa il adaug pe cel de pe poz cur la subM sau nu?
SSub + el < SSub, dar SSub + El > 0, il consideram ca il adaugam, insa notam ca max Sub avuta
Daca Ssub <
*/