Pagini recente » Cod sursa (job #533679) | Cod sursa (job #1043796) | Cod sursa (job #486160) | Cod sursa (job #338187) | Cod sursa (job #1991850)
#include <fstream>
using namespace std;
ifstream fin ("ssm.in");
ofstream fout("ssm.out");
int v[6000001];
int main()
{
int n, dr=1, st=1, suma, maxim=(-1<<31)+1, ind_st, ind_dr;
fin>>n;
for (int i=1;i<=n;++i)
fin>>v[i];
while (v[dr]<0 && dr<=n)
{
st = dr;
suma=v[dr];
if (maxim<suma)
{
maxim=suma;
ind_dr=dr;
ind_st=st;
}
++dr;
}
if (dr<=n)
{
st=dr;
suma=v[dr];
if (maxim<suma)
{
maxim=suma;
ind_dr=dr;
ind_st=st;
}
}
while (dr<n)
{
if (suma+v[dr+1]>0 && dr+1<=n)
{
dr++;
suma+=v[dr];
if (maxim<suma)
{
maxim=suma;
ind_dr=dr;
ind_st=st;
}
}
else
{
dr++;
st=dr;
suma=v[dr];
if (maxim<suma)
{
maxim=suma;
ind_dr=dr;
ind_st=st;
}
while (v[dr+1]<0 && dr+1<=n)
{
dr++;
st=dr;
suma=v[dr];
if (maxim<suma)
{
maxim=suma;
ind_dr=dr;
ind_st=st;
}
}
if (dr<n)
{
dr++;
st=dr;
suma=v[dr];
if (maxim<suma)
{
maxim=suma;
ind_dr=dr;
ind_st=st;
}
}
}
}
fout<<maxim<<" "<<ind_st<< " "<<ind_dr;
}