Cod sursa(job #2255964)
Utilizator | stefan popa stefan1anuby | Data | 7 octombrie 2018 19:29:14 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.86 kb |
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("ssm.in");
ofstream out("ssm.out");
int main()
{
int n,i,x,s=0,smaxright=0,smaxleft=0,smax=0,left=1;
in>>n;
for(i=1; i<=n; i++)
{
in>>x;
s+=x;
if(s<=0)
{
s=0;
left=i+1;
}
else
{
if(smax<s)
{
smaxleft=left;
smaxright=i;
smax=s;
}
else if(smax==s)
{
if(smaxright-smaxleft>i-left)
{
smaxleft=left;
smaxright=i;
smax=s;
}
}
}
//cout<<s<<" "<<left<<" "<<i<<endl;
}
out<<smax<<" "<<smaxleft<<" "<<smaxright;
return 0;
}