Pagini recente » Cod sursa (job #3142954) | Cod sursa (job #3305057) | Cod sursa (job #1206928) | Cod sursa (job #3142943) | Cod sursa (job #3305994)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int main(){
int n, nr, ssm = -2e9, spcrt = 0, spmin = 0, raspstanga = 0, raspdreapta = 0, inceputsecv = 1;
f >> n;
for (int i = 1; i <= n; i++){
f >> nr;
spcrt += nr; /// suma partiala curenta
if (spcrt - spmin > ssm){ /// am gasit o noua secventa de suma maxima
ssm = spcrt - spmin; /// suma maxima se transfera pentru comparare de mai incolo
raspdreapta = i; /// indicele de sfarsit al secventei de sume maxime
raspstanga = inceputsecv; /// indicele de inceput al secventei de sume maxime
}
if (spcrt < spmin){ /// am gasit o noua suma partiala minima
spmin = spcrt; /// se transfera informatia nou gasita
inceputsecv = i + 1; /// incepe o noua secventa de suma care o sa fie comparata
}
}
g << ssm << " " << raspstanga << " " << raspdreapta;
/// secventa cu suma maxima " " inceputul ei " " si sfarsitul ei
return 0;
}