Cod sursa(job #2333046)
Utilizator | Data | 31 ianuarie 2019 17:25:06 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1 kb |
#include <cstdio>
using namespace std;
long long v[6000001];
int main()
{
long long m,s,em;
int n,i,ok=0,st,dr,stm,poz=1,l,ap=0;
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lld",&v[i]);
if(i==1)
em=v[1];
if(v[i]>0)
ok=1;
if(v[i]>em)
{
em=v[i];
poz=i;
}
}
if(ok==0)
printf("%lld %d %d",em,poz,poz);
else
{
m=l=s=0;
for(i=1;i<=n;i++)
{
if(s+v[i]>=0)
{
s+=v[i];
l++;
}
else
{
s=0;
l=0;
}
if(s>m)
{
m=s;
dr=i;
st=dr-l+1;
}
}
printf("%lld %d %d",m,st,dr);
}
return 0;
}