Pagini recente » Cod sursa (job #2564982) | Cod sursa (job #2751678) | Cod sursa (job #2827619) | Cod sursa (job #2641283) | Cod sursa (job #931282)
Cod sursa(job #931282)
#include <fstream>
#define INFINIT 0x3f3f3f3f
using namespace std;
int n, i, a[6000005], sum[6000005], best[6000005], inc, sf, bestsum = -INFINIT;
void citire ()
{
ifstream in ("ssm.in");
in >> n;
for (i = 1; i <= n; ++i)
in >> a[i];
in.close ();
}
void init ()
{
for (i = 1; i <= n; ++i)
sum[i] = sum[i - 1] + a[i];
}
void solve ()
{
int min = 0;
for (i = 1; i <= n; ++i)
{
best[i] = sum[i] - min;
if (min > sum[i])
min = sum[i];
if (best[i] > bestsum)
bestsum = best[i];
}
}
void cauta ()
{
for (i = 1; i <= n; ++i)
if (best[i] == bestsum)
{
sf = i;
i = n + 1;
}
for (i = sf - 1; i >= 1; --i)
if (best[i] < 0)
{
inc = i + 1;
i = 0;
}
}
void afis ()
{
ofstream out ("ssm.out");
out << bestsum << " " << inc << " " << sf;
out << '\n';
out.close ();
}
int main()
{
citire ();
init ();
solve ();
cauta ();
afis ();
return 0;
}