Pagini recente » Cod sursa (job #1137728) | Cod sursa (job #1181844) | Cod sursa (job #846064) | Monitorul de evaluare | Cod sursa (job #432863)
Cod sursa(job #432863)
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define MAX 10005
int n,best,start,end,poz=MAX-1;
char buff[MAX];
inline void cit (int &nr)
{
int sign;
for (sign=1; !isdigit (buff[poz]); )
{
if (buff[poz]=='-')
sign=-1;
if (++poz==MAX)
{
fread (buff,1,MAX,stdin);
poz=0;
}
}
for (nr=0; isdigit (buff[poz]); )
{
nr=nr*10+buff[poz]-'0';
if (++poz==MAX)
{
fread (buff,1,MAX,stdin);
poz=0;
}
}
nr*=sign;
}
void solve ()
{
int i,x,sum,indx;
cit (n);
best=-INF;
sum=indx=0;
for (i=1; i<=n; ++i)
{
cit (x);
if (sum<0)
{
sum=x;
indx=i;
}
else
sum+=x;
if (sum>best)
{
end=i;
best=sum;
start=indx;
}
}
printf ("%d %d %d",best,start,end);
}
int main ()
{
freopen ("ssm.in","r",stdin);
freopen ("ssm.out","w",stdout);
solve ();
return 0;
}