Cod sursa(job #1963899)
| Utilizator | Data | 12 aprilie 2017 21:28:30 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 85 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 1.1 kb |
#include <fstream>
#include <climits>
using namespace std;
int N,i,inc,sf,Inceput[6000001];
long long int S1,Smax,X;
int main()
{
ifstream fin("ssm.in");
ofstream fout("ssm.out");
fin>>N;
S1=0;
Smax=LLONG_MIN;
Inceput[0]=1;
for(i=1;i<=N;i++)
{
fin>>X;
if(S1>=0)
{
S1=S1+X;
Inceput[i]=Inceput[i-1];
}//if
else
{
S1=X;
Inceput[i]=i;
}//else
if(S1>Smax)
{
Smax=S1;
inc=Inceput[i];
sf=i;
}//if
else
if(S1==Smax and Inceput[i]<inc)
{
Smax=S1;
inc=Inceput[i];
sf=i;
}//if
else
if(S1==Smax and Inceput[i]==inc and sf-inc>i-Inceput[i])
{
Smax=S1;
inc=Inceput[i];
sf=i;
}//if
}//for i
fout<<Smax<<' '<<inc<<' '<<sf;
fin.close ();
fout.close();
return 0;
}
