Cod sursa(job #2673251)

Utilizator Rowantoie vlad Rowan Data 16 noiembrie 2020 12:41:59
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
//
//  main.cpp
//  ssm
//
//  Created by Toie Vlad on 16/11/2020.
//

#include <iostream>
#include <fstream>
#include <limits.h>
#define MAX_N 7000005
#define INF 2140000000

using namespace std;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int v[MAX_N];

int main() {
    int n;
    cin>>n;
    for(int i = 1; i<=n; i++) {
        cin>>v[i];
    }
    int l = 0, r = 0, max = -INF, min = 0, c_i = 0;
    for(int i = 1; i<=n; i++) {
        v[i] += v[i-1];
        if(max < v[i] - min) { //v[i] o sa fie suma elementelor pana la poz i -> comparam cu (v[i] - min)
            max = v[i] - min;
            l = c_i + 1;
            r = i;
        }
        if(min > v[i]) {
            min = v[i];
            c_i = i;
        }
    }
    cout<<max<<" "<<l<<" "<<r<<endl;
    return 0;
}
//    SUMA DE SUBSECVENTA MAXIMA
//    sum[0] = 0;
//    for(int i = 1; i<=n; i++) {
//        sum[i] = sum[i-1] + v[i];
//    }
//    int min_sum = 0;
//    int max_sum = -MAX_N;
//    for(int i = 1; i<=n; i++) {
//        sub_v[i] = sum[i] - min_sum;
//        if(max_sum < sub_v[i]) {
//            max_sum = sub_v[i];
//        }
//        if(min_sum > sub_v[i]) {
//            min_sum = sub_v[i];
//        }
//    }
//    cout<<max_sum<<" ";