Pagini recente » Cod sursa (job #2481225) | Cod sursa (job #1168473) | Cod sursa (job #2190418) | Cod sursa (job #1323436) | Cod sursa (job #3196815)
#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;
fin >> noNums;
crS.lft = 1;
for (int i = 0; i <= noNums; ++i) {
int number = 0;
if (i < noNums) {
fin >> 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;
}
}*/
}
fout << 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 <
*/