Pagini recente » Cod sursa (job #3281930) | Cod sursa (job #2406048) | Cod sursa (job #1215045) | Cod sursa (job #810746) | Cod sursa (job #3140239)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
const int MAX_LENGTH = 6000000;
const int MAX_VALUE = 2000000000;
int main() {
/* int numLen;
cin >> numLen;
int num[MAX_LENGTH + 1];
for (int i = 1; i <= numLen; ++i) {
cin >> num[i];
}
int maxSum = -MAX_VALUE - 1, start = 0, end = 0;
for (int i = 1; i <= numLen; ++i) {
int sum = 0;
for (int j = i; j <= numLen; ++j) {
sum += num[j];
if (sum > maxSum) {
maxSum = sum;
start = i;
end = j;
}
}
}
cout << maxSum << ' ' << start << ' ' << end;*/
/*int numLen;
fin >> numLen;
int sum[MAX_LENGTH + 1] = {0};
for (int i = 1; i <= numLen; ++i) {
int number;
fin >> number;
sum[i] = sum[i - 1] + number;
}
int maxSum = -MAX_VALUE - 1, start = 0, end = 0;
for (int i = 1; i <= numLen; ++i) {
for (int j = i; j <= numLen; ++j) {
if (sum[j] - sum[i - 1] > maxSum) {
maxSum = sum[j] - sum[i - 1];
start = i;
end = j;
}
}
}
fout << maxSum << ' ' << start << ' ' << end;*/
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 = -MAX_VALUE, 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
*/