Pagini recente » Cod sursa (job #2382749) | Cod sursa (job #2222023) | Cod sursa (job #2490593) | Cod sursa (job #804202) | Cod sursa (job #3166688)
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int n,s[6000010];
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>s[i];
///subscv de suma maxima= suma partiala pana la i - subscv cu suma minima
int best=-2000000009,mn=0,index,st,dr;
for(int i=1;i<=n;i++)
{
s[i]=s[i]+s[i-1];///sume partiale
if(best < s[i]-mn)/// gasesc o suma mai buna
{
best=s[i]-mn;
st=index+1;///poz din stanga si poz din dreapta a subscv maxime
dr=i;
}
if(mn > s[i])/// de unde incep numaratoarea cu minimul sumei sirului
mn=s[i], index=i;///index = poz de unde incepe secvmin
}
g<<best<<' '<<st<<' '<<dr<<'\n';
}