Pagini recente » Cod sursa (job #251511) | Cod sursa (job #2675055) | Cod sursa (job #576295) | Cod sursa (job #2865901) | Cod sursa (job #2589977)
#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++)
{
int best = sum[i] - minsum[i];
if (best > bestSol)
{
left = lft[i];
right = i;
bestSol = max(bestSol, best);
}
}
fout << bestSol << ' ' << left+1 << ' ' << right;
return 0;
}