Cod sursa(job #899858)
Utilizator | Data | 28 februarie 2013 16:40:48 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.62 kb |
#include <stdio.h>
using namespace std;
int N, vec[6000000], st, dr, i, smax, start, finish;
int main(){
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
scanf("%d", &N);
for(i = 1; i <= N; i++){
scanf("%d", &vec[i]);
vec[i] += vec[i - 1];
}
smax = -(1 << 30) - 1;
for(st = 1; st <= N; st++){
for(dr = st; dr <= N; dr++){
if(vec[dr] - vec[st - 1] > smax){
smax = vec[dr] - vec[st - 1];
start = st;
finish = dr;
}
}
}
printf("%d %d %d", smax, start, finish);
}