Pagini recente » Cod sursa (job #843351) | Cod sursa (job #1198275) | Cod sursa (job #1796902) | Cod sursa (job #610333) | Cod sursa (job #2634208)
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main() {
int n;
fin >> n;
int sum, start = 1, stop = 1;
int tempSum, tempStart = 1;
fin >> sum;
tempSum = sum;
bool positives = (sum < 0) ? false : true;
for (int i = 2; i <= n; ++i) {
int temp;
fin >> temp;
if (!positives) {
if (temp >= 0)
positives = true;
else {
if (temp > sum) {
sum = temp;
start = stop = i; // !
}
}
}
tempSum += temp;
if (tempSum <= 0) {
tempSum = 0;
tempStart = i+1;
} else {
if (tempSum > sum) {
sum = tempSum;
start = tempStart;
stop = i;
} else if (tempSum == sum) {
if (start - stop > i - tempStart) { // cauta cea mai scurta subsecventa
sum = tempSum;
start = tempStart;
stop = i;
}
}
}
}
fout << sum << " " << start << " " << stop;
}