Pagini recente » Cod sursa (job #945870) | Cod sursa (job #1226028) | Cod sursa (job #1033895) | Cod sursa (job #3126415) | Cod sursa (job #3140341)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
const int MAX_LENGTH = 6000000;
int main() {
int numLen;
fin >> numLen;
int num[MAX_LENGTH + 1], sum[MAX_LENGTH + 1] = {0};
for (int i = 1; i <= numLen; ++i) {
fin >> num[i];
sum[i] = num[i] + sum[i - 1];
}
int st = 1, end = 1, maxSum = INT_MIN, maxSt = 1, maxEnd = 1;
for (int i = 1; i <= numLen; ++i) {
if (num[i] + sum[i - 1] > num[i]) {
sum[i] = num[i] + sum[i - 1];
end = i;
if (num[i] + sum[i - 1] > maxSum) {
maxSum = num[i] + sum[i - 1];
maxSt = st;
maxEnd = end;
}
} else {
sum[i] = num[i];
st = i;
end = i;
if (num[i] > maxSum) {
maxSum = num[i];
maxSt = st;
maxEnd = end;
}
}
}
fout << maxSum << ' ' << maxSt << ' ' << maxEnd;
return 0;
}
/*
7
5 -6 3 4 -2 3 -3
=>
8 3 6
2
3 1
=>
4 1 2
5
3 1 -3 -1 4
=>
4 1 2
1
3
=>
3 1 1
3
-2 -1 -3
=>
-1 2 2
3
-1 -1 -1
=>
-1 1 1
5
1 -2 3 -4 5
=>
5 5 5
*/