Pagini recente » Cod sursa (job #1539648) | Cod sursa (job #2054069) | Cod sursa (job #1908043) | Cod sursa (job #1074966) | Cod sursa (job #395956)
Cod sursa(job #395956)
/*
* File: main.cpp
* Author: alex
*
* Created on February 14, 2010, 9:08 AM
*/
#include <iostream>
#include <limits.h>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int *a, N, li = 0, ls = 0, sMax = INT_MIN, sTemp = 0, liT = 0, lsT = 0;
int main()
{
f >> N;
a = new int[N];
for (int i = 0; i < N; ++i)
{
f >> a[i];
}
f.close();
for (int i = 0; i < N; ++i)
{
if (a[i] > 0)
{
sTemp += a[i];
}
else
if (a[i] == 0)
{
if (sTemp > sMax)
{
li = liT, ls = i - 1, sMax = sTemp;
}
}
else
if (a[i] < 0)
{
if (a[i] + sTemp < 0)
{
if (a[i] > sMax)
{
li = liT, ls = i, sMax = a[i];
liT = i + 1;
sTemp = 0;
}
else
{
liT = i + 1;
sTemp = 0;
}
}
else
{
if (sTemp > sMax)
{
sMax = sTemp, li = liT, ls = i - 1;
}
if (a[i] + sTemp >= 0)
{
sTemp += a[i];
}
}
}
}
if ((sTemp > sMax) && (sTemp != 0))
{
sMax = sTemp, li = liT, ls = N - 1;
}
g << sMax << " " << li + 1 << " " << ls + 1;
g.close();
delete[] a;
}