Cod sursa(job #2890240)

Utilizator bogdan2405Strat Bogdan-Valentin bogdan2405 Data 14 aprilie 2022 23:23:41
Problema Subsecventa de suma maxima Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
/*
Problema Subsecventa de suma maima
Platforma: Infoarena
*/
#include<bits/stdc++.h>

using namespace std;

ifstream f("ssm.in");
ofstream g("ssm.out");

int main(){
    int n,i,a,left,right;
    int ans = INT_MIN;
    vector<int> v,sp,mp;

    f>>n;
    v.push_back(0);                 //for starting from 1 index
    sp.push_back(0);
    mp.push_back(INT_MAX);

    for(i=0;i<n;++i){
        f >> a;
        v.push_back(a);
    }

    for(i=1;i<v.size();++i){
        sp.push_back( v[i] + sp[i-1] );
        mp.push_back( min( mp[i-1], sp[i] ) );
    }

    for(i=1;i<v.size();++i){
        if(sp[i]-mp[i-1]> ans){
            ans = sp[i] - mp[i-1];
            right = i;
        }
    }

    g << ans << ' ';

    for(i=right;i>0;--i){
        if(ans>0){
            ans -= v[i];
        }

        if(ans == 0){
            left = i;
            break;
        }
    }

    g << left << ' ' << right;

    return 0;
}