Cod sursa(job #2907977)
Utilizator | Data | 31 mai 2022 23:40:36 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 85 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.53 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){
start = (sum < 0)*(i+1) + (sum >=0)*start;
sum = v[i] + (sum >=0)*sum;
if(bsum < sum){
bsum = sum;
first = start;
last = i + 1;
}
}
printf("%d %d %d\n", bsum, first, last);
return 0;
}