Cod sursa(job #3004893)
| Utilizator | Data | 16 martie 2023 17:50:52 | |
|---|---|---|---|
| Problema | Subsecventa de suma maxima | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.96 kb |
#include <fstream>
using namespace std;
ifstream cin ("ssm.in");
ofstream cout ("ssm.out");
int main()
{
int n, a, st, s, smax, stmax, drmax, lmax;
cin>>n;
s=0;
smax=-1000000000;
st=1;
for (int i=1; i<=n; i++)
{
cin>>a;
s=s+a;
if (s>smax)
{
smax=s;
stmax=st;
drmax=i;
lmax=drmax-stmax+1;
}
else if (s==smax)
{
if (st<stmax)
{
stmax=st;
drmax=i;
lmax=drmax-stmax+1;
}
else if (st==stmax)
{
if ((i-st+1)<lmax)
{
lmax=i-st+1;
drmax=i;
}
}
}
if (s<0)
{
s=0;
st=i+1;
}
}
cout<<smax<<" "<<stmax<<" "<<drmax;
return 0;
}
