Cod sursa(job #2453041)
Utilizator | Data | 2 septembrie 2019 11:54:16 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.98 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
#define nmax 1000000005
int sum=0,n,x,Max=-nmax,a,b,af,bf,nr=0,nrf=0;
int main()
{
fin>>n;
a=1;
for(int i=1;i<=n;i++)
{
fin>>x;
sum+=x;
b++;
nr++;
if(sum>Max)
{
Max=sum;
af=a;
bf=b;
nrf=nr;
}
else if(sum==Max)
{
if(a<af)
{
af=a;
bf=b;
nrf=nr;
}
else if(a==af)
{
if(nr<nrf)
{
nrf=nr;
bf=b;
}
}
}
if(sum<0)
{
nr=0;
sum=0;
a=i+1;
if(a>n)
a--;
}
}
fout<<Max<<" "<<af<<" "<<bf<<'\n';
}