Cod sursa(job #3133855)

Utilizator Paul281881818818181991919191881818Draghici Paul Paul281881818818181991919191881818 Data 27 mai 2023 11:48:52
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
std::ifstream fin("ssm.in");
std::ofstream fout("ssm.out");
std::vector<int> arr;
int main(){
    int n;
    fin >> n;
    arr = std::vector<int> (n);
    int mx = INT_MIN, ok = 0, poz;
    for(int i = 0; i < n; i++){
        fin >> arr[i]; 
        if(arr[i] >= 0)
            ok = 1;
        if(mx < arr[i]){
            mx = arr[i], poz = i;
        }
    }
    if(!ok){
        fout << mx << " " << poz + 1 << " " << poz + 1; return 0;
    }
    long long int mx_sum = 0, curr_sum = 0, mx_left = 0, mx_right = 0, left = 0;
    for(int i = 0; i < n; i++){
        curr_sum += arr[i];
        if(curr_sum < 0){
            left = i + 1;
            curr_sum = 0;
        }
        if(mx_sum < curr_sum){
            mx_left = left, mx_right = i;
            mx_sum = curr_sum;
        }
    }
    fout << mx_sum << " " << mx_left + 1 << " " << mx_right + 1;
}