Pagini recente » Cod sursa (job #2774187) | Cod sursa (job #2245960) | Cod sursa (job #2388665) | Cod sursa (job #2919457) | Cod sursa (job #2396047)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssm.in");
ofstream fout ("ssm.out");
int n, k, s, l, maxx, st, dr;
int main (){
fin>>n;
/**
calculam D[i] = suma maxima a unei secvente TERMINATE cu elementul de pe pozitia i
ma intereseaza locul unde se termina exact secventa pentru a lua in calcul
sa lipesc la ea urmatorul element
v: 2 4 -3 -5 1 6 -2 -3 5 6 -2 3 1 -2 1
D: 2 6 3 -2 1 7 5 2 7 13 11 14 15 13 14
**/
fin>>k;
s=k;
l=1;
maxx=s;
st=1;
dr=1;
for(int i=2; i<=n; i++){
fin>>k;
if (k + s >= k){
s=s + k;
}else{
s = k;
l=i;
}
if(s > maxx){
maxx=s;
st=l;
dr=i;
}
}
fout<<maxx<<" "<<st<<" "<<dr;
return 0;
}