Pagini recente » Cod sursa (job #1247731) | Cod sursa (job #490051) | Cod sursa (job #1023729) | Cod sursa (job #2056804) | Cod sursa (job #3216568)
#include <bits/stdc++.h>
using namespace std;
const int MAX_SIZE = 1e6 * 6;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int main() {
int arraySize;
fin >> arraySize;
vector<long> arr(arraySize);
for (int i = 0; i < arraySize; ++i) {
fin >> arr[i];
}
long maxSum = LONG_MIN, firstIndex = 0, secondIndex = 0;
long partialMaxSum = LONG_MIN;
int partialFirstIndex = 0, partialSecondIndex = 0;
for (int i = 0; i < arraySize; ++i) {
if (arr[i] > partialMaxSum + arr[i]) {
partialMaxSum = arr[i];
partialFirstIndex = i;
partialSecondIndex = i;
} else {
partialMaxSum += arr[i];
++partialSecondIndex;
}
if (maxSum < partialMaxSum
|| (maxSum == partialMaxSum && partialFirstIndex + 1 < firstIndex)
|| (maxSum == partialMaxSum && partialFirstIndex + 1 == firstIndex && partialSecondIndex < secondIndex)) {
maxSum = partialMaxSum;
firstIndex = partialFirstIndex + 1;
secondIndex = partialSecondIndex;
}
}
fout << maxSum << " " << firstIndex << " " << secondIndex;
return 0;
}