Pagini recente » Cod sursa (job #1587143) | Cod sursa (job #1181202) | Cod sursa (job #1081068) | Cod sursa (job #2087774) | Cod sursa (job #2763397)
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int best[6000050], l[6000050], arr[6000050], i, n, maxSum, minIndex, minLength, r;
int main()
{
fin >> n;
for (i = 0; i < n; i++)
fin >> arr[i];
best[0] = arr[0];
l[0] = 0;
for (i = 1; i < n; i++)
if (best[i-1] > 0) { best[i] = best[i-1] + arr[i]; l[i] = l[i-1]; }
else { best[i] = arr[i]; l[i] = i; }
maxSum = best[0];
for (i = 0; i < n; i++)
if (best[i] > maxSum) maxSum = best[i];
minIndex = n + 1;
for (i = 0; i < n; i++)
if (best[i] == maxSum && l[i] < minIndex) minIndex = l[i];
minLength = n + 1;
r = -1;
for (i = 0; i < n; i++)
if (best[i] == maxSum && l[i] == minIndex && i - l[i] < minLength) { minLength = i - l[i]; r = i; }
fout << maxSum << " " << minIndex + 1 << " " << r + 1 << endl;
return 0;
}