Cod sursa(job #2907975)
Utilizator | Data | 31 mai 2022 23:38:00 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 90 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 6e6+5;
int v[NMAX];
int main(){
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
int n;
scanf("%d", &n);
for(int i=0; i<n; ++i)
scanf("%d", &v[i]);
int bsum=v[0], first=1, last=0, sum=v[0], start=0;
for(int i=1; i<n; ++i){
if(sum < 0){
sum = v[i];
start = i + 1;
}else
sum += v[i];
if(bsum < sum){
bsum = sum;
first = start;
last = i + 1;
}
}
printf("%d %d %d\n", bsum, first, last);
return 0;
}