Cod sursa(job #2187652)
Utilizator | Data | 26 martie 2018 17:43:10 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.31 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int maxx,val,st,n,i,sf,stmax,sfmax,q;
int main()
{
fin>>n;
maxx=0;
val=0;
st=1;
sf=1;
for(i=1; i<=n; i++)
{
fin>>q;
if(val+q>q)
{
sf=i;
val=val+q;
}
else
{
st=i;
sf=i;
val=q;
}
if(val<0)
{
val=0;
st=i+1;
sf=i+1;
}
if(val>maxx)
{
maxx=val;
stmax=st;
sfmax=sf;
}
else
{
if(val==maxx)
{
if(st<stmax)
{
maxx=val;
stmax=st;
sfmax=sf;
}
else
{
if(st==stmax)
{
if(sf-st<stmax-sfmax)
{
maxx=val;
stmax=st;
sfmax=sf;
}
}
}
}
}
}
fout<<maxx<<" "<<stmax<<" "<<sfmax;
}