Pagini recente » Cod sursa (job #2182350) | Cod sursa (job #1555575) | Cod sursa (job #1012771) | Cod sursa (job #3128826) | Cod sursa (job #2589975)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int sum[6000010];
int minsum[6000010];
int best[6000010];
int lft[6000010];
int main()
{
int n;
fin >> n;
for (int i = 0; i <= n; i++)
{
minsum[i] = 1 << 30;
}
for (int i = 1; i <= n; i++)
{
int x;
fin >> x;
sum[i] = x + sum[i - 1];
if (minsum[i - 1] <= sum[i])
lft[i] = lft[i - 1];
else
lft[i] = i;
minsum[i] = min(sum[i], minsum[i - 1]);
}
minsum[0] = 0;
int left=0, right=0;
int bestSol = -(1<<30);
for (int i = 1; i <= n; i++)
{
best[i] = sum[i] - minsum[i];
if (best[i] > bestSol)
{
left = lft[i];
right = i;
bestSol = max(bestSol, best[i]);
}
}
fout << bestSol << ' ' << left+1 << ' ' << right;
return 0;
}